2016-10-11 11 views
2

나는 두 개의 별개의 복잡한 빌드 작업을 가지고 있는데, 이는 maven에 의해 순차적으로 수행되어야한다. 예를 들어, war 파일, 라이브러리 및 ...
내가 아는 한, 나는이 작업을 별도의 maven pom 파일로 분할해야한다. 이 접근 방식으로, 각각의 pom 파일에는 특정 책임이 있습니다. 가능한 한 간단하게 유지할 수 있습니다. 몇 가지 기술적 인 문제로 인해이 작업을 수행해야합니다.
부모 pom 파일에이 두 파일 사이에 공유 된 종속성을 넣어 중복을 줄입니다.
이 경우 create-jar.xml 및 create-war.xml은 작업이고 parent.xml은 공유 된 종속성을 포함합니다.
parent.xml여러 POM 파일을 사용하여 프로젝트 빌드

<?xml version="1.0" encoding="UTF-8"?> 
    <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns="http://maven.apache.org/POM/4.0.0" 
      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>main</groupId> 
     <artifactId>main</artifactId> 
     <version>1.0</version> 
     <packaging>pom</packaging> 

     <dependencies> 
      <dependency> 
       <groupId>org.slf4j</groupId> 
       <artifactId>slf4j-api</artifactId> 
       <version>1.7.13</version> 
      </dependency> 
     </dependencies> 

    </project> 


생성-jar.xml의

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns="http://maven.apache.org/POM/4.0.0" 
     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> 

    <parent> 
     <artifactId>main</artifactId> 
     <groupId>main</groupId> 
     <version>1.0</version> 
     <relativePath>parent.xml</relativePath> 
    </parent> 
    <groupId>create</groupId> 
    <artifactId>create</artifactId> 
    <version>1.2-SNAPSHOT</version> 
    <packaging>jar</packaging> 
</project> 


생성-war.xml

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns="http://maven.apache.org/POM/4.0.0" 
     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> 

    <parent> 
     <artifactId>main</artifactId> 
     <groupId>main</groupId> 
     <version>1.0</version> 
     <relativePath>parent.xml</relativePath> 
    </parent> 
    <groupId>create-war</groupId> 
    <artifactId>create-war</artifactId> 
    <version>1.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-war-plugin</artifactId> 
       <version>3.0.0</version> 
       <configuration> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

W hat 내가 필요합니다 mvn은 하나의 명령으로 두 pom 파일의을 설치합니다. 창조 - 항아리가 창조 전쟁 이전에 실행되어야하기 때문에이 명령서는 내게 정말로 중요합니다.
두 가지 접근 방법이 있습니다.
상속 create-jar.xml을 create-war.xml의 직접적인 부모로 사용하여 create-war를 실행하면 create-jar가 호출됩니다.
다른 해결책은 create-war.xml에서 create-jar.xml을 실행하여 구성입니다. 어떻게 할 수 있을지 모르겠습니다. 하지만 maven-invoker 또는 maven-antRun 플러그인이 도움이 될 수 있다고 생각합니다. 나는 나에게 기꺼이 도와 줄 것이다.

+2

멀티 모듈 빌드가 필요합니다. – Jens

+0

WAR에 JAR이 포함되는지 확인하십시오. 실제로 시나리오가 "JAR을 빌드 한 다음 JAR이 포함 된 WAR을 빌드"하는 경우 -이 시나리오의 첫 번째 시나리오는 아닐 것입니다. –

+0

나는' 을 만들 ' 주 당신의 생성-war.xml이 추가 시도 것 –

답변

0

확인하십시오. sample project
기본적으로 부모 폴 (pom)이 있어야합니다.
위의 예는 약간 길지만 평신도의 용어에있는 모든 단계를 설명합니다.