gpt4 book ai didi

java - 建议使用 Maven2 针对 dev/test/qa 的不同数据库和配置提出一个好方法?

转载 作者:行者123 更新时间:2023-11-30 05:11:29 24 4
gpt4 key购买 nike

您好,我正在与我的团队使用 Hibernate 和 Spring MVC 开始一个新的 Web 开发项目。我们将使用 Maven2 进行构建并使用 NetBeans IDE。我们过去的项目使用 ant 作为构建系统。我们将使用 Atlassian Bamboo 作为我们的 CI 服务器。

我的问题涉及在具有不同配置的开发/测试/质量保证/生产构建环境之间切换的最佳实践。

更具体地说,我们的开发环境需要两种配置,一个共享服务器数据库和一个用于离线开发的本地 HSQL DB。我们的测试环境还需要使用HSQL来确保测试的可预测性。

我正在尝试使用 Maven 找到在这些环境之间进行选择的最佳方法,使用 ant 我们刚刚使用 <copy>目标,它将在构建之前从预定义目录复制我们的配置文件并重写一些 .properties文件。

到目前为止,我发现我们可以利用 Maven 配置文件,但不完全确定最好的方法是什么,目前我只找到了如何使用这种方法设置某些属性,但没有找到如何指定某些 hibernate 配置。

对于我对 Maven 的了解不够深表歉意,我们正在切换到 Maven,因为我们发现依赖解析可以为我们减轻巨大的负担。

感谢您的帮助和耐心。

更新:如果有人感兴趣的话,这是一个更简单的方法。

这个想法是将配置文件的使用与资源标签结合起来。为每个目标环境创建单独的文件夹并将它们包含在资源中。

<build>
<resources>
<resource>
<!-- Needs to be here globally for common resources. -->
<directory>src/main/resources</directory>
</resource>
</resources>
...
</build>

<profiles>
<profile>
<id>dev</id>
<build>
<resources>
<resource>
<!-- will add anything here to the resources. -->
<directory>src/main/resource-overrides/dev</directory>
</resource>
</resources>
</build>
</profile>
<profile>
<id>qa</id>
<build>
<resources>
<resource>
<directory>src/main/resource-overrides/qa</directory>
</resource>
</resources>
</build>
</profile>
....
</profiles>

请注意,如果您希望资源覆盖配置文件中的默认资源,您需要在覆盖定义之后在配置文件中包含默认资源位置,如下所示:

<profile>
<id>prod</id>
<build>
<resources>
<resource>
<directory>src/main/resource-overrides/prod</directory>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
</profile>

最佳答案

配置文件绝对是支持此类事情的 Maven 方式。 Maven 站点上有一个页面 that describes how to build for different environments看起来它应该满足您的需求(本质上它使用 Maven AntRun plugin 来复制您之前使用 Ant 所做的事情)。我可能会将该方法修改为:

<profile>
<id>test</id>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>process-resources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<delete file="${project.build.outputDirectory}/environment.properties"/>
<copy file="src/main/resources/environment.test.properties"
tofile="${project.build.outputDirectory}/environment.properties"/>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>

不过,绝对不是 Maven 最漂亮的。

关于java - 建议使用 Maven2 针对 dev/test/qa 的不同数据库和配置提出一个好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3233535/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com