2009-07-09 8 views
2

프로젝트는 핵심 라이브러리 코드, 테스트 및 예제 코드가 포함 된 라이브러리입니다. 빌드 프로세스의 마지막에 다음과 같은 아카이브가 생성되어야한다Maven을 사용한 예제 코드 아카이브

  • xy-1.1.0-core.jar
  • xy-1.1.0-tests.jar
  • xy-1.1.0-examples.jar

받는다는으로이를 설정하는 가장 좋은 방법은 무엇입니까? 현재 설정은 다음과 같습니다

또한
src 
src/main/java 
src/examples/java 
src/test/java 

모든 종속성을 포함하는 lib 디렉토리가 있어야합니다. xy-jars, 라이브러리 jar 및 기타 스크립트는 릴리스 파일 xy-1.1.0.tar.gz에 압축해야합니다.

+0

나는이 질문이 건설적이지 않다는 것에 동의하지 않는다. 나는 당신이 메이븐의 규칙 내에서 사용할 수있는 옵션으로 도움이되는 답변을 찾았다. 이것이 지나치게 공격적인 검토 일 수 있다고 생각하십시오. – cwash

답변

5

당신이 말하는 사람에 따라 Maven의 큰 장점 중 하나는 "컨벤션 오버 컨벤션"입니다. 즉, Maven에 앱을 몰래 넣으려고 시도하거나 Maven에 맹꽁만 시도하려고 시도 할 때를 의미합니다 앱에 - 일반적으로 Maven에 앱을 몰래 넣는 것이 훨씬 쉽습니다.

하나의 "프로젝트"를 두 개의 메이븐 프로젝트 (핵심 및 예제)로 나누는 것이 더 쉬울 것입니다. Maven은 "프로젝트"를 단일 이슈 (일명 JAR 파일, WAR 파일, EAR 파일 등)를 생성하는 것으로 처리합니다 (테스트 항아리와 같은 몇 가지 제외 사항이 있지만 나중에 알아 보겠습니다). 아마도 "예제"를 "핵심"프로젝트에 종속되어있는 모듈, 하위 프로젝트 또는 별도의 프로젝트로 취급하는 것이 더 쉬울 것입니다.

"테스트"부분에 "코어"또는 "코어"및 "예제"에 대한 테스트가 포함되어 있습니까? 단지 핵심이라면, 이것을 핵심 프로젝트의 테스트 디렉토리로 옮기고 싶을 것이다. 둘 다라면, 그것을 분리하고 단위 테스트를 적절한 프로젝트로 옮길 필요가 있습니다.

guide to attached tests에 자세히 설명 된대로 maven-jar-plugin을 구성하여 프로젝트의 테스트 코드 JAR을 생성 할 수 있습니다.

Maven은 "로컬 저장소"에있는 모든 프로그램의 모든 종속성을 유지합니다. 일반적으로 % user_directory % /. m2 아래의 많은 디렉토리에 저장됩니다. Maven에게 프로젝트의 모든 종속성을 지정된 디렉토리를 사용하여 종속성 : 복사 - 종속성에 대한 자세한 내용은 dependency plugin page.

최종 타르를 만들려면 이전 프로젝트를 사용하여 Assembly을 빌드하십시오.

2

Nate는 대부분이 부분을 다루었지만 구체적인 예를 제시 할 것입니다.

<modules> 
    <modules>core</modules> 
    <modules>examples</modules> 
</modules> 

이 기지를 가정의 groupId는 "com.company입니다 다음과 같이 기본 치어에서
pom.xml 
src/main/assembly/assembly.xml 
core/pom.xml 
core/src/main/java/... 
core/src/test/java/... 
examples/pom.xml 
examples/src/main/java/... 

, 당신은 당신의 서브 모듈을 표시합니다 :

는 다음 디렉토리 레이아웃이 같아야 방법 .예를 들어 다음 모듈 리딩은 다음 (물론, 이름과 버전에 대한 조정)로 시작합니다, "XY"와 artifactId를은 "

<parent> 
    <groupId>com.company.example</groupId> 
    <artifactId>xy</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
</parent> 
<groupId>com.company.example</groupId> 
<artifactId>xy-core</artifactId> 
<version>1.0.0-SNAPSHOT</version> 

어셈블리가 기본 프로젝트에서 실행되었는지 확인하려면 포함 빌드 구성에 다음 또한

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>2.1</version> 
    <configuration> 
    <descriptors> 
     <descriptor>src/main/assembly/assembly.xml</descriptor> 
    </descriptors> 
    </configuration> 
</plugin> 

것은, 테스트 클래스에 대한 별도의 단지를 구축 핵심/pom.xml 파일에 이것을 추가 :

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <executions> 
    <execution> 
     <goals> 
     <goal>jar</goal> 
     <goal>test-jar</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 

assembly.xml 자체 WI 그러면 다음과 같이 보일 것입니다 :

<assembly> 
    <id>assembly</id> 
    <formats> 
    <format>tar.gz</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <moduleSets> 
    <moduleSet> 
     <binaries> 
     <dependencySets> 
      <dependencySet> 
      <outputDirectory>lib</outputDirectory> 
      </dependencySet> 
     </dependencySets> 
     <outputDirectory>lib</outputDirectory> 
     </binaries> 
    </moduleSet> 
    </moduleSets> 
</assembly> 

저는 여기에 몇 가지 것들이 빠졌을 것입니다. 그러나 그것은 일반적인 생각입니다.