我觀察到Maven 2和Maven 3之間的變化行爲。這是一個bug還是一個特性?我找不到在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執行,我得到的只有在戰爭中common.jar,但不是傳遞依賴。
這是一個預期的行爲?爲了使事情變得「有趣」:如果其中一個配置文件被默認激活(在common-pom中顯式,因爲激活不是從父模塊派生到子模塊),這些傳遞依賴關係總是添加到門戶。 但通過配置文件篩選或屬性設置按預期工作。
高興你對評論的本質,爲紐帶似乎已經腐爛。 – 2017-02-07 19:45:50