У меня есть следующий pom.xml:Maven ресурсов Фильтрация со свойствами профиля
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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>mycompany</groupId>
<artifactId>resource-fail</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<foo.bar>BazBat</foo.bar>
</properties>
<build>
<resources>
<resource>
<filtering>true</filtering>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
<profiles>
<profile>
<id>Development</id>
<!--
<activation>
<activeByDefault>true</activeByDefault>
</activation>
-->
<properties>
<foo.bar>Development</foo.bar>
</properties>
</profile>
</profiles>
</project>
Обратите внимание, что activation
элемент на profile
закомментирована
У меня также есть следующие в src/main/java/application.properties
myproperty=${foo.bar}
Так что я ожидаю, что Maven просто заменит ${foo.bar}
на BazBat
, если профиль развития не activiated, то я ожидаю Maven заменить ${foo.bar}
с Development
Когда я бегу mvn package
он устанавливает значение BazBat
. Хорошо, фильтрация ресурсов работает должным образом.
Однако, когда я бегу mvn package -P Development
он устанавливает значение BazBat
запутывает еще больше, если раскомментировать activation
элемент на профиль и запустить mvn package
он установит ${foo.bar}
в Development
Я даже запустить mvn help:active-profiles package
, чтобы он выводил имя активного профиля, и в обоих сценариях выше он говорит, что профиль разработки активен, но фильтрация по-прежнему не работает без установленного флага activeByDefault
.
Подводя итог:
- Maven правильно переопределяет свойства со значениями из профиля, если профиль
activeByDefault
- Maven делает не переопределить свойство, если я активировать профиль с помощью переключателя командной строки
Что происходит?
Моя среда:
> mvn -version
Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-14T11:29:23-06:00)
Maven home: C:\apache-maven-3.2.5
Java version: 1.8.0_65, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_65\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "dos"
Update: Я обновлен до последней мавена (3.3.3) - проблема остается. Моя новая среда:
> mvn -version
Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T06:57:37-05:00)
Maven home: C:\apache-maven-3.3.3
Java version: 1.8.0_65, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_65\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "dos"