2012-09-06 3 views
15

Maven은 부모의 pom.xml 파일에서받는다는 부모 프로젝트 항아리를 생성하는 방법을

<packaging>pom</packaging>

절을 가지고 부모 프로젝트가 필요합니다. 그러한 프로젝트가 설치되면 pom 파일 만 메이븐 저장소로 생성됩니다. 상위 프로젝트에 Java 코드가 있더라도 Jar 파일은 생성되지 않습니다. 그렇게되면 과도한 비어있는 부모 프로젝트가 생겨납니다. 논리적으로, 내 도서관 중 일부는 동시에 부모가 될 수 있습니다.

설치 사이에 packaging 절을 제거하거나 추가하지 않고 상위 프로젝트에 대해 pom 및 jar 파일을 생성하는 방법이 있습니까?

답변

10

Maven Jar Plugin과 Maven Build Helper를 사용하십시오. 예 POM :

<?xml version="1.0" encoding="UTF-8"?> 
<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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>test</groupId> 
    <artifactId>test</artifactId> 
    <version>1.0</version> 

    <packaging>pom</packaging> 

    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>build-helper-maven-plugin</artifactId> 
     <version>1.7</version> 
     <executions> 
      <execution> 
      <id>attach-artifacts</id> 
      <phase>package</phase> 
      <goals> 
       <goal>attach-artifact</goal> 
      </goals> 
      <configuration> 
       <artifacts> 
       <artifact> 
        <file>test-${project.version}</file> 
        <type>jar</type> 
       </artifact> 
       </artifacts> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-jar-plugin</artifactId> 
     <version>2.4</version> 
     <executions> 
      <execution> 
      <id>default</id> 
      <goals> 
       <goal>jar</goal> 
      </goals> 
      <phase>package</phase> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

Maven을 구축 결과 :

mvn install 
[INFO] Scanning for projects... 
[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building test 1.0 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- build-helper-maven-plugin:1.7:attach-artifact (attach-artifacts) @ test --- 
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default) @ test --- 
[WARNING] JAR will be empty - no content was marked for inclusion! 
[INFO] 
[INFO] --- maven-install-plugin:2.3.1:install (default-install) @ test --- 
[INFO] Installing /home/username/projects/test/pom.xml to /home/username/.m2/repository/test/test/1.0/test-1.0.pom 
[INFO] Installing /home/username/projects/test/test-1.0 to /home/username/.m2/repository/test/test/1.0/test-1.0.jar 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 0.805s 
[INFO] Finished at: Thu Sep 06 13:33:20 EDT 2012 
[INFO] Final Memory: 4M/119M 
[INFO] ------------------------------------------------------------------------ 

메이븐 관행에 대한 참고 사항 : 모든 자녀 모듈에 공통적으로 사용되는 종속성과 플러그인을 정의하는 경우

부모 모듈은 전형적으로 . 그것은 거의 자체의 출력을 가지고 있습니다. 상위 모듈에서 수행하지 않고 다른 모든 모듈 아티팩트를 모으는 "분배"서브 모듈을 원할 수도 있습니다.

+2

해결책을 제공해 주셔서 감사합니다. 부모 프로젝트를위한 jar 파일을 생성하여 Eclipse Workspace에서 빈 프로젝트를 추가로 피하고 프로젝트 관계를 단순화하고자합니다. 나는 maven이 처음인데 잘못되었을 수도 있습니다. 빈 부모 프로젝트를 사용 하시겠습니까? 나는 당신의 솔루션이 자신의 jar-building 플러그인을 가지고있는 어린이 프로젝트와 충돌 할 것이라고 생각합니다. – Kallisto

+2

자식 프로젝트에서 사용되는 속성 설정, 종속성 버전, 플러그인 등을 정의하는 역할 만한다는 점에서 "비어있는"(생성물이 생성되지 않는) 부모 프로젝트가있는 것이 완벽합니다. BTW - 내 솔루션을 사용하는 경우 체크 표시를 클릭하여 대답을 수락하십시오. – noahlz

+0

답변과 설명에 감사드립니다. 빈 프로젝트를 학부모로 사용하는 것이 좋습니다. – Kallisto

관련 문제