행복한 아빠

Maven FAQ 본문

개발환경

Maven FAQ

행복한아빠 2009. 1. 20. 23:47
  메이븐을 이용하다 개발하다 보면 자주하는 부딪히는 질문들이 있다. 자꾸 Maven 사이트에서 찾아보지 말고 한 번 맘먹고 정리해본다.

원문:  http://maven.apache.org/general.html

자주 물어보는 기술적인 질문들

1. WEB-INF/lib에 JAR가 포함되는 것을 어떻게 막나요? 난 단지 컴파일만 필요합니다.
2. 사용가능한 플러그인 목록을 어떻게 보나요?
3. 내가 어떤 버전의 플러그인을 사용하고 있는지 어떻게 알 수 있나요?
4. Maven 2에서 Ant 타스크를 어떻게 사용할 수 있나요?
5. JVM target과 source를 선택해서 컴파일하려면 어떻게 설정해야 하나요?
6. 나만의 디렉토리 구조를 생성하는게 가능한가요?
7. 소스코드가 어디에 있나요? Maven2 사이트에서 눈을 씻고 찾아봐도 링크를 못찾겠어요.
8. Maven이 디펜던시를 다운로드하지 못하는 것 같아요. 내가 올바로 설치한건가요?
9. 내 로컬 저장소에 넣고 싶은 jar가 있습니다. 어떻게 여기에 복사하나요?
10. 메일링 리스트 구독을 취소하려면 어떻게 해야 하나요?
11. 테스트를 건너뛰려면 어떻게 하나요?
12. 하나의 단위테이스만 실행하려면 어떻게 하나요?
13. 사이트(site) 플러그인에서 특별한 문자셋을 다루려고 해요.
14. 내 디펜던시에 tools.jar를 어떻게 포함하나요?
15. Maven이 내 테스트 클래스를 컴파일만하고 실행하지는 않아요.
16. Maven SNAPSHOT 산출물은 어디에 있나요?
17. Maven XSD 스키마는 어디에?
18. Maven이 작동하지 않아요. 어떻게 도움을 얻죠?
19.실행 디버깅 출력이나 에러 메시지를 어떻게 보죠?
20. Mojo가 뭐죠?

1. WEB-INF/lib에 JAR가 포함되는 것을 어떻게 막나요? 난 단지 컴파일만 필요합니다.
이런 경우에는 provided 스코프(scope)를 사용해야 한다. 이것은 실행시간에 컨테이너나 JDK 같은 것이 제공한다고 Maven에게 알려준다.

2. 사용가능한 플러그인 목록을 어떻게 보나요?
"Available Plugins" 페이지의 그것들의 목록이 있다. 그리고 Maven2 저장소를 검색할 수 있는 몇 가지 정보가 더 있다. 다음을 참조하라.
http://maven.apache.org/plugins

3. 내가 어떤 버전의 플러그인을 사용하고 있는지 어떻게 알 수 있나요?
Maven Help 플러그인의 describe 골을 사용할 수 있다. 예를 들어 install 플러그인의 버전을 찾아보려면 아래와 같이 입력한다.
mvn -Dplugin=install help:describe

plugin 아규먼트로 아티팩트 아이디가 아니라 플러그인 접두사를 주는 것을 주의하라.

4. Maven 2에서 Ant 타스크를 어떻게 사용할 수 있나요?
현재 2가지 방법이 있다.
  • Java, Beanshell 또는 Java 비슷한 스크립트 언어로 만든 플러그인을 사용하기 위해서라면, "Ant 문서에서 소개하는 방법"을 이용하여 Ant 태스크를 쓸 수 있다.
  • 프로젝트에 맞춰서 만든 작은 양의 Ant 스크립트라면 AntRun 플러그인을 사용할 수 있다.

5. JVM target과 source를 선택해서 컴파일하려면 어떻게 설정해야 하나요?
pom에서 source와 target 파라메터를 설정해야 한다. 예를 들어 source와 target의 JVM이 1.5라면 pom에 다음과 같은 내용이 있어야 한다.
  ...
  <build>
  ...
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.0.2</version>
        <configuration>
          <source>1.5</source>
          <target>1.5</target>
       </configuration>
     </plugin>
   </plugins>
  ...
 </build>
  ...


6. 나만의 디렉토리 구조를 생성하는게 가능한가요?
물론 가능하다!
<build> 세션의 <sourceDirectory>, <resources>와 그 외 엘리먼트를 설정하면 된다.
덧붙여, 플러그인의 파일이나 디렉토리의 기본설정을 사용하지 않으면 다른 플러그인 설정도 바꿔야 할 수도 있다. (그냥 쓰는게 좋다. 그것이 Maven의 사상이고 관례이다.)

7. 소스코드가 어디에 있나요? Maven2 사이트에서 눈을 씻고 찾아봐도 링크를 못찾겠어요.
소스코드는 subversion에서 찾을 수 있다.: http://svn.apache.org/repos/asf/maven/components/trunk
더 정보가 필요하다면 "Building Maven 2.0"를 보라.

8. Maven이 디펜던시를 다운로드하지 못하는 것 같아요. 내가 올바로 설치한건가요?
아마 Maven이 proxy를 사용하도록 설정해야 할 것이다. Maven이 proxy를 사용하는 방법은 "Configuring a proxy"를 보라.

9. 내 로컬 저장소에 넣고 싶은 jar가 있습니다. 어떻게 여기에 복사하나요?
Maven 저장소의 레이아웃을 이해한다면 jar 파일을 올바를 위치에 바로 복사해도 된다. Maven이 다음에 작동할 때 jar 파일을 찾을 것이다.
Maven 저장소의 레이아웃 이해에 확신이 가지 않는다면, 단 다음과 같이 한줄의 명령으로 jar 파일을 저장소에 로드할 수 있다.
mvn install:install-file
  -Dfile=<path-to-file>
  -DgroupId=<group-id>
  -DartifactId=<artifact-id>
  -Dversion=<version>
  -Dpackaging=<packaging>
  -DgeneratePom=true
Where: <path-to-file>  the path to the file to load
       <group-id>      the group that the file should be registered under
       <artifact-id>   the artifact name for the file
       <version>       the version of the file
       <packaging>     the packaging of the file e.g. jar

이 명령은 파일을 maven 저장소에 로드하고 필요하면 이름도 바뀔 것이다. (maven 규칙에 따라)


10. 메일링 리스트 구독을 취소하려면 어떻게 해야 하나요?
메일링 리스트 구독을 취소하려면 간단히 다음 주소로 메시지를 보낸다.
[mailing-list]-unsubscribe@maven.apache.org
그러니까 users@maven.apache.org 에 메일링 리스트 구독을 했었으면 리스트에서 뺄려면 users-unsubscribe@maven.apache.org에 메시지를 보내야 한다. 


11. 테스트를 건너뛰려면 어떻게 하나요?
명령행에서 -Dmaven.test.skip=true 파라메터를 추가한다.

12. 하나의 단위테이스만 실행하려면 어떻게 하나요?
명령행에서 -Dtest=MyTest 파라메터를 사용한다. 주의: 전체 패키지를 지정하지 않는다.(org.apache.x.y.MyTest)

13. 사이트(site) 플러그인에서 특별한 문자셋을 다루려고 해요.
사용하는 IDE에서 정확한 인코딩을 사용하도록 설정한다. 이클립스라면 eclipse.ini 파일에 -Dfile.encoding=ISO-8859-1 을 추가한다.
pom에서 출력 인코딩을 설정한다.
  ...
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-site-plugin</artifactId>
    <version>2.0-beta-6</version>
    <configuration>
      <outputEncoding>UTF-8</outputEncoding>
   </configuration>
 </plugin>
  ...
mvn이 사용하는 파일 인코딩을 설정한다. MAVEN_OPTS에 IDE와 같이 인코딩을 추가한다. $HOME/.pfofile 에 MAVEN_OPTS="-Dfile.encoding=ISO-8859-1"을 추가하면 된다.

14. 디펜던시에 tools.jar를 어떻게 포함하나요?
다음 코드는 Windows, Linux 그리고 Solaris에서 JDK의 tools.jar를 포함시킨다. (Mac OS X 와 몇가지 free JDK의 runtime에는 이미 포함되어 있다.)
...
  <profiles>
    <profile>
      <id>default-tools.jar</id>
      <activation>
        <property>
          <name>java.vendor</name>
          <value>Sun Microsystems Inc.</value>
       </property>
     </activation>
      <dependencies>
        <dependency>
          <groupId>com.sun</groupId>
          <artifactId>tools</artifactId>
          <version>1.4.2</version>
          <scope>system</scope>
          <systemPath>${java.home}/../lib/tools.jar</systemPath>
       </dependency>
     </dependencies>
   </profile>
 </profiles>
  ...


15. Maven이 내 테스트 클래스를 컴파일만하고 실행하지는 않아요.
surefile 플러그인이 테스트들을 실행한다.  무심코 ${test}에 값을 할당하면 surefile 플러그인이 특정 테스트 클래스들만 수행하도록 설정된다. settings.xml과 pom.xml에 다음과 같이 "test" 속성이 설정되어 있는지 검사한다.
  ...
  <properties>
    <property>
      <name>test</name>
      <value>some-value</value>
    </property>
 </properties>
  ...
또는
 ...
  <properties>
    <test>some-value</test>
 </properties>
  ...


16. Maven SNAPSHOT 산출물은 어디에 있나요?
Maven이나 플러그인의 개발 버전을 빌드하고자 한다면 maven 스냅샷 저장소에 접근할 필요가 있다.
"플러그인 스냅샷 안내"를 보고 settings.xml을 업데이트 해야 한다.

17. Maven XSD 스키마는 어디에?
Maven XSD 는 "여기"에 있고 Maven Settings XSD는 "여기"에 있다.
당신이 즐겨쓰는 IDE는 아마 pom.xml과 settings.xml 편집을 위해 XSD 스키마를 지원할 것이다.
다음과 같이 설정할 필요가 있다.

<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                      http://maven.apache.org/maven-v4_0_0.xsd">
  ...
</project>


<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      http://maven.apache.org/xsd/settings-1.0.0.xsd">
  ...
</settings>

18. Maven이 작동하지 않아요. 어떻게 도움을 얻죠?
"도움 얻기" 페이지에 유용한 리소스를 올려놓았다.

19.실행 디버깅 출력이나 에러 메시지를 어떻게 보죠?
-X 파라메터나 -e 파라메터를 이용해 maven을 실행하면 된다. 더 자세한 정보를 보기 위해 다음과 같이 실행한다.
mvn --help

20. Mojo가 뭐죠?
mojo를 Maven plain Old Java Object를 말한다. 모든 mojo는 maven에서 실행가능한 goal이다. 그리고 플러그인은 하나 이상의 관련된 mojo들의 배포판이다.

0 Comments
댓글쓰기 폼