我想用值取决于环境配置文件(dev,prod ...)来填充属性文件common.properties,但我不希望文件被添加到类路径。Maven填充属性文件切换配置文件,而无需在类路径中添加文件
我看了几个主题,如 read Maven variable from properties file using profile
所以我管理与个人资料填写的属性:
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>${properties-maven-plugin.version}</version>
<executions>
<execution>
<id>read-project-properties</id>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>config/common_dev.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<build>
<resources>
<resource>
<directory>config</directory>
<filtering>true</filtering>
</resource>
...
</resources>
...
</build>
模块中我有一个包含文件common.properties和common_dev文件夹配置。属性:
common_dev.properties:
common.reception.directory.norm = PHASE1V1
common.properties:
common.reception.directory.norm = ${common.reception.directory.norm}
common.properties中充满了mvn clean install,但config目录变成在Eclipse中的一个源文件夹中,添加了该目录的类路径条目。 这是我的问题,common.properties文件在应用程序中使用包含其路径的environnement变量并且不从类路径中读取。 它正在工作,但让项目开发人员感到困惑。
我也尝试使用properties-maven-plugin的write-project-properties和write-active-profile-properties属性,但是第一个将所有项目属性写入文件,第二个不写任何内容,因为read-project -properties将属性读取为项目属性而不是配置文件属性。
有没有办法做我想做的事情?
我认为最好让您的项目只包含运行测试所需的配置设置(这些设置位于src/test/resources中)。特定于环境的设置在运行时从外部引入到项目时大多进行了安全配置(理想情况下,环境本身提供了配置,例如:应用程序服务器可以具有系统属性,其属性文件的位置包含特定于环境的设置。 –