在我的POM中,我有:
<properties>
<custom.properties>
${basedir}/src/main/props/${environment}-${flavor}.properties
</custom.properties>
</properties>
凡environment
和flavor
可以在命令行中提供:
mvn clean install -Denvironment=test -Dflavor=guest
在maven-resources插件定义中,我有:
<filters>
<filter>${basedir}/src/main/props/base.properties</filter>
<filter>${custom.properties}</filter>
</filters>
如果创建的文件${environment}-${flavor}.properties
不存在,是否可以定义后备或完全忽略?Maven当前将引发错误。
我宁愿没有创建的每一个可能的组合一个虚拟文件environment
和flavor
。
谢谢。
这有些未经测试,但是我在类似的用例中使用了properties-maven-plugin,我想加载一个可能存在或不存在的文件。可能不是一个完全可行的答案,但我希望它能给您一些想法。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0.0</version>
<executions>
<execution>
<id>load-filters</id>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>${basedir}/src/main/props/${environment}-${flavor}.properties</file>
</files>
<quiet>true</quiet> <!-- important! -->
</configuration>
</execution>
</executions>
</plugin>
“安静”部分告诉插件,如果文件不存在,则不要使构建失败;它只会记录一条消息并继续前进。如果文件存在,则将属性作为项目属性加载。
当resources
插件执行时,它使用过滤器
在POM构建/过滤器部分中指定的系统属性,项目属性和过滤器属性文件
因此,无需任何进一步配置即可将属性应用于资源。您无需<filters>
在资源插件中指定。
以上涵盖了“忽略”情况。如果要提供后备选项,可能会有些棘手。我不确定属性插件如何与之交互
<filters>
<filter>${basedir}/src/main/props/base.properties</filter>
</filters>
例如-哪个优先,加载的项目属性或过滤器属性?我很想尝试这样的事情:
<properties>
<prop1>defaultValue</prop1>
<prop2>anotherDefaultValue</prop2>
</properties>
然后让加载的文件根据需要覆盖这些值。我相信这可行。
您还可以签出属性插件的代码,以查看如果加载了指定相同属性的多个文件,则哪个属性优先,然后配置该插件以导致所需行为的顺序加载两个文件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句