2012-01-17 4 views
2

Maven 2와 Maven 3 사이의 변경 동작을 관찰했습니다. 버그 또는 기능입니까? 아무것도 찾지 못했습니다. Maven 3.x Compatibility NotesMaven 3 회귀 : 프로필 종속성이 손실 되었습니까?

두 개의 다른 프로필을 사용하여 다중 모듈 프로젝트에서 서로 다른 환경에 대한 종속성을 추가합니다.

부모 POM :

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>group</groupId> 
    <artifactId>main</artifactId> 
    <packaging>pom</packaging> 
    <version>1.0.0-SNAPSHOT</version> 

    <modules> 
     <module>common</module> 
     <module>portal</module> 
    </modules> 
</project> 

공통 POM은 프로필을 가지고

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>group</groupId> 
    <artifactId>common</artifactId> 
    <packaging>jar</packaging> 
    <version>1.0.0-SNAPSHOT</version> 
    <parent> 
     <groupId>group</groupId> 
     <artifactId>main</artifactId> 
     <version>1.0.0-SNAPSHOT</version> 
     <relativePath>../pom.xml</relativePath> 
    </parent> 
    <profiles> 
     <profile> 
      <id>development</id> 
      <dependencies> 
       <dependency> 
        <groupId>log4j</groupId> 
        <artifactId>log4j</artifactId> 
        <version>1.2.14</version> 
       </dependency> 
      </dependencies> 
     </profile> 
     <profile> 
      <id>production</id> 
      <dependencies> 
       <dependency> 
        <groupId>commons-logging</groupId> 
        <artifactId>commons-logging</artifactId> 
        <version>1.1.1</version> 
       </dependency> 
      </dependencies> 
     </profile> 
    </profiles> 
</project> 

포털 - POM은 공통 의존성을 가지며, 공통의 전이 종속성을 포함한다 모듈 :

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>group</groupId> 
    <artifactId>portal</artifactId> 
    <packaging>war</packaging> 
    <version>1.0.0-SNAPSHOT</version> 
    <parent> 
     <groupId>group</groupId> 
     <artifactId>main</artifactId> 
     <version>1.0.0-SNAPSHOT</version> 
     <relativePath>../pom.xml</relativePath> 
    </parent> 
    <dependencies> 
     <dependency> 
      <groupId>group</groupId> 
      <artifactId>common</artifactId> 
      <version>1.0.0-SNAPSHOT</version> 
     </dependency> 
    </dependencies> 
</project> 

Maven2를 통해이 프로젝트를 빌드하십시오. mvn -P production package은 전 이적 종속성을 포함하는 WAR를 생성합니다. (나는 단순한 의존성을 사용하여 쉽게 재생산했다.) Maven3을 통해 실행하면서, WAR에서 common.jar 만 얻었지만 전이 의존성은 얻지 못했다.

원하는 동작입니까?

"재미있는 것"을 만들기 : 프로파일 중 하나가 기본적으로 활성화되면 (활성화는 하위 모듈에서 부모 모듈로 파생되지 않으므로 common-pom에 명시되어 있음) 이러한 전이 의존성은 항상 문. 프로필을 통한 필터링 또는 속성 설정은 예상대로 작동합니다.

답변

3

comment 그것을 편도 해결 Maven2 and 3

그러나 실제 솔루션은 릴리스 플러그인에 의해 "원인"이 있습니다 : 프로필을 릴리스 플러그인에 제출해야합니다. -Darguments=-Pproduction

+0

링크에 썩어 보인 것처럼 코멘트 에센스가 포함되어 있으면 다행입니다. –

1

해결책이 아니지만 사용 사례가 this open과 비슷합니다. 흥미롭게도 버그 세부 사항에 따르면 이전 Maven 버전에서도 발생합니다.

상술 한 상황이 등록 정보를 사용하여 프로파일 활성화 (되지 -P 경유 등) 작업 속성 활성화와

사용 않는

가 작동 :

관련 문제