类或TextFiles中的Java Build Environment配置?

时间:2014-03-31 14:50:37

标签: java properties build maven-assembly-plugin

我使用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 ...错误的代码样式?)

感谢您的回答:)

1 个答案:

答案 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>

从这里开始,有两种方法可以应用此配置文件特定属性:

  1. 在模块的POM的构建部分中应用资源过滤,其中包含属性文件:

    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
    
  2. 在程序集中的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>
    
  3. 使用此配置文件(-P test-environment)构建项目时,environment.properties中的上述属性将设置如下:

    REGISTRATION_URL=http://test-env/register