2016-08-25 1 views
1

우리 부모 인 pom은 7 개의 모듈을 정의하며 그 중 5 개는 종속성 jar이고 그 중 2 개는 해당 항아리에 의존하는 war입니다.프로필을 사용하여 'mvn install'에서 WAR 모듈을 제외

질문 : 그것은 mvn install 두 전쟁 패키지를 제외 할 부모 치어에 대해 실행할 때 포함되는 모듈 정의 받는다는 profiles (또는 다른 솔루션)를 사용할 수 있습니까?

다음 두 가지 전쟁을 패키지화하기 위해 다른 프로필 (또는 다른 솔루션)을 갖고 싶습니다. 해당 프로파일이 실행되면 종속성 jar 모듈이 리포지토리에없는 경우에만 다시 작성되어 설치되어야합니다.

+0

는 당신이 이제까지'MVN --projects 모듈 --also - 메이크업 dependent' 고려 적이 있습니까? – khmarbaise

답변

1

당신은 (런타임에이 모듈 jarwar에, 부모에 대한 pom에서 바꿀 것)을 packaging을 기반으로 새 속성을 만들려면 부모 pom.xml 파일에 build-helper-maven-plugin를 사용할 수 있습니다. 이 새로운 속성은 maven-install-plugin을 동적으로 건너 뛸 수 있습니다.

간단한 예 : project.packagingwar 있고 같은 효과적으로 skip 옵션을 통해 maven-install-plugin 실행을 스킵 할 때만

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>build-helper-maven-plugin</artifactId> 
    <version>1.10</version> 
    <executions> 
     <execution> 
      <id>build-helper-regex-is-packaging-war</id> 
      <phase>validate</phase> 
      <goals> 
       <goal>regex-property</goal> 
      </goals> 
      <configuration> 
       <name>only.when.war.is.used</name> 
       <value>${project.packaging}</value> 
       <regex>war</regex> 
       <replacement>true</replacement> 
       <failIfNoMatch>false</failIfNoMatch> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

<plugin> 
    <artifactId>maven-install-plugin</artifactId> 
    <version>2.5.2</version> 
    <configuration> 
     <skip>${only.when.war.is.used}</skip> 
    </configuration> 
</plugin> 

은 그렇게는 동적 ${only.when.war.is.used} 속성 true로 설정 될 것이다.


당신은 다음 프로필이 동작을 이동하고 공통의 장소에 보관, jarwar에 대해 다른 설정을 할 수 : 루트 pom.xml, 자신의 동적 거동에 감사합니다. 이슈가 이미 설치되었는지의 여부를 감지 할 수있는 능력에 관한


official 플러그인 문서에 이런 옵션이없는 나는 단순히 플러그인을 사용하여 같은 동작을 수 있다고 생각하지 않습니다 .

그러나 파일이 없으면 (설치된 파일) maven profile 활성화 메커니즘을 사용하여 그에 따라 프로파일을 활성화 할 수 있습니다.

동적 방법으로 할 수

다음과 같은 접근 방식 (전용 표준 속성에 따라) :

<profiles> 
    <profile> 
    <activation> 
     <file> 
     <missing>${settings.localRepository}/${project.groupId}/${project.artifactId}/${project.build.fileName}.${project.packaging}</missing> 
     </file> 
    </activation> 
    ... 
    </profile> 
</profiles> 
+0

@ amphibient이 문제를 해결하셨습니까? 대답이 도움이 되었습니까? –

관련 문제