我使用maven程序集插件为环境测试和生产中的属性(test1.properties和test2.properties)构建不同的jar(test-properties.jar和prod-properties.jar)。现在我将属性文件(test1.properties和test2.properties)更改为Java文件(Test1.java和Test2.java)...编译它们并再次运行程序集插件。 所以我有两个带有类的jar文件,它适用于不同的环境。
- > test-properties.jar(Test1.class,Test2.class)
- > prod-properties.jar(Test1.class,Test2.class)
如果我在Produktion上部署Webapp,那么我将使用prod-properties.jar进行部署。对于本地工作区,我使用test-properties.jar
我的问题:使用Enviroment Properties和属性文件或Java类是否更好? (性能?不需要FileInputStream ...错误的代码样式?)
感谢您的回答:)
答案 0 :(得分:0)
我建议使用属性文件,Java类应该在环境之间保持不变,而maven内置了资源过滤。
在我正在处理的多模块项目中,我有一个动态设置的属性文件,具体取决于我使用的配置文件/环境:
动态属性指向我项目的注册URL,并且是特定于环境的。它在属性文件中定义如下:
REGISTRATION_URL=${REGISTRATION_URL}
然后我可以在maven个人资料中指定注册网址:
<profile>
<id>test-environment</id>
<activation>
<property>
<name>environment</name>
<value>test</value>
</property>
</activation>
<properties>
<REGISTRATION_URL>http://test-env/register</REGISTRATION_URL>
</properties>
</profile>
从这里开始,有两种方法可以应用此配置文件特定属性:
在模块的POM的构建部分中应用资源过滤,其中包含属性文件:
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
在程序集中的moduleSet或fileSet中指定资源过滤。在我的例子中,我使用moduleSet:
<moduleSet>
<useAllReactorProjects>true</useAllReactorProjects>
<includes>
<include>${project.groupId}:core-module</include>
</includes>
<sources>
<fileSets>
<fileSet>
<directory>src/main/resources/META-INF</directory>
<outputDirectory>conf</outputDirectory>
<includes>
<include>environment.properties</include>
</includes>
<filtered>true</filtered>
</fileSet>
</fileSets>
<includeModuleDirectory>false</includeModuleDirectory>
</sources>
</moduleSet>
使用此配置文件(-P test-environment)构建项目时,environment.properties中的上述属性将设置如下:
REGISTRATION_URL=http://test-env/register