Я наблюдал изменение поведения между Maven 2 и Maven 3. Это ошибка или особенность?Я не смог найти ничего в Замечаниях по совместимости Maven 3.x
Я использую два разных профиля для добавления зависимостей для разных сред в многомодульном проекте.
parent-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>
Common-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>
Portal-pom имеет только общую зависимость и должен включать транзитивную зависимость от общегоmodule:
<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 я получаю только общий файл .jar в WAR, но не транзитивную зависимость.
Это желаемое поведение?
ДляСделайте вещи даже «интересными»: если один из профилей активирован по умолчанию (явно в common-pom, так как активация не наследуется от родительского элемента к дочерним модулям), эти переходные зависимости всегда добавляются на портал.Но фильтрация или настройка свойств с помощью профилей работает, как и ожидалось.