我已經嘗試過類似的努力的一些答案,但沒有什麼我想要實現比較適合...行家:屬性路徑不會被替換(讀第二其它屬性文件)
這是我m試圖做:
我想基於(其他)屬性文件生成(過濾)屬性文件。
我們有一個屬性文件,其中包含一般屬性。該文件(現在是default.properties)被讀取並解析爲一個魅力。
然後,我們也想根據環境具體的屬性。 (我知道,不是好的做法,但是這是最好的解決方案,因爲我們有自主建立在不同的機器上,併產生所有屬性的無處不在方便)
這就是我們陷入困境......
當指定一個包含屬性的路徑(在這種情況下爲targetEnvironment)時,它不會被填充其值。
- 我已經嘗試切換階段(生成資源/初始化/處理資源);與
- 使用CLI屬性:
- 使用的配置文件調用:
<profiles>
<profile>
<id>nt</id>
<properties>
<targetEnvironment>NT</targetEnvironment>
</properties>
</profile>
</profiles>
這是(部分)當前POM(僅相關部分(聚甲醛內)顯示):
<project>
(some maven code)
<build>
(other maven code)
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0.0</version>
<executions>
<execution>
<id>execution1</id>
<phase>generate-resources</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>src/env_properties/env/${targetEnvironment}/specific.properties</file>
</files>
</configuration>
</execution>
<execution>
<id>execution2</id>
<phase>generate-resources</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>src/env_properties/env/default/default.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.soebes.maven.plugins</groupId>
<artifactId>maven-echo-plugin</artifactId>
<version>0.1</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>echo</goal>
</goals>
</execution>
</executions>
<configuration>
<echos>
<echo>Animal: src/env_properties/env/${targetEnvironment}/specific.properties</echo>
<!-- prints: src/env_properties/env/NT/specific.properties -->
</echos>
</configuration>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>process-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/extra-resources</outputDirectory>
<resources>
<resource>
<directory>src/env_properties/base</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
奇怪的是,
,如果我用文字「NT」它的工作原理替換$ {} targetEnvironment,所以機制的工作,只有不更換...
我也試圖更改插件版本,但某些版本甚至使它更糟...
任何想法?
感謝,
S.
編輯:另一個奇怪的事情,如果我不建了-DtargetEnvironment=NT
參數我得到一個構建失敗的原因是:
[INFO]
[INFO] --- properties-maven-plugin:1.0.0:read-project-properties (execution1) @ batch3 ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.644 s
[INFO] Finished at: 2017-04-21T15:55:11+02:00
[INFO] Final Memory: 41M/459M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:properties-maven-plugin:1.0.0:read-project-properties (execution1) on project batch3: Properties could not be loaded from File: C:\path\to\src\env_properties\env\${targetEnvironment}\specific.properties -> [Help 1]
[ERROR]