处理java项目中的每个开发人员资源,例如database.properties或log4j.properties

时间:2012-08-21 08:42:24

标签: java maven resources log4j

我们是4位开发人员,致力于基于maven的java web项目。我们每个都有一个特定的database.properties文件,指向每个开发人员的数据库架构。

我们目前遇到的问题是我们有时会无意中提交我们的per-developper database.properties或log4j.properties 文件,而这些文件会引起明显的问题。

另一方面,如果我们将这些文件放入Tomcat的/lib目录中,我们可能会忘记将它们包含在出厂的生产应用程序中。

有人可以提供建议或建议最佳做法,以便解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

您应该一起开始使用Maven ProfilesMaven Resource Filtering

如果您将这两种技术结合使用,那么每个用户都可以在%USER_HOME%/.m2/settings.xml文件中定义其配置文件,而database.propertieslog4j.properties文件使用资源过滤来获取用户特定的属性。用户个人资料属性。

我一直在使用这种技术通过设置这样的结构来支持不同的数据库:

src
  |-main
       |-filters
       |       |-derby.properties
       |       |-h2.properties
       |       |-mssql.properties
       |       |-mysql.properties
       |-templates
                 |-db.properties

在我的pom.xml

<profiles>
    <profile>
        <id>derby</id>
        <build>
            <filters>
                <filter>src/main/filters/derby.properties</filter>
            </filters>
            <resources>
                <resource>
                    <directory>src/main/templates</directory>
                    <filtering>true</filtering>
                </resource>
            </resources>
        </build>
    </profile>
    <profile>
        <id>mysql</id>
        <build>
            <filters>
                <filter>src/main/filters/mysql.properties</filter>
            </filters>
            <resources>
                <resource>
                    <directory>src/main/templates</directory>
                    <filtering>true</filtering>
                </resource>
            </resources>
        </build>
    </profile>
    <profile>
        <id>mssql</id>
        <build>
            <filters>
                <filter>src/main/filters/mssql.properties</filter>
            </filters>
            <resources>
                <resource>
                    <directory>src/main/templates</directory>
                    <filtering>true</filtering>
                </resource>
            </resources>
        </build>
    </profile>
    <profile>
        <id>h2</id>
        <build>
            <filters>
                <filter>src/main/filters/h2.properties</filter>
            </filters>
            <resources>
                <resource>
                    <directory>src/main/templates</directory>
                    <filtering>true</filtering>
                </resource>
            </resources>
        </build>
    </profile>
</profiles>

您应该可以对文件执行相同的操作。

答案 1 :(得分:0)

使用Git并在清理本地引用时仅推送到主服务器。