我想提一下我在Maven配置方面还比较新手。
我的情况是:
- 我使用Maven 3.0.5来构建J2E应用程序
- 该应用程序部署在四个不同的环境中:本地、开发、测试和生产
- 我使用Maven配置文件来配置特定于环境的配置
- 我已经在文件系统中的
属性
文件中定义了这些配置。
下面是这些文件在文件系统中的位置:
<my-project-root>
---profiles
------local
---------app.properties
------dev
---------app.properties
------test
---------app.properties
我在我的pom.xml
文件中使用以下逻辑加载相应的属性文件:
<profiles>
<profile>
<id>local</id>
<!-- The development profile is active by default -->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<build.profile.id>local</build.profile.id>
</properties>
</profile>
<profile>
<id>dev</id>
<properties>
<build.profile.id>dev</build.profile.id>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<build.profile.id>prod</build.profile.id>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<build.profile.id>test</build.profile.id>
</properties>
</profile>
</profiles>
<build>
<finalName>MyProject</finalName>
<plugins>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
<resource>
<directory>profiles/${build.profile.id}</directory>
</resource>
</resources>
</build>
使用此配置,我可以在几乎任何地方使用当前配置文件的相应属性。除了
<plugins>
部分。我想从这些属性文件中加载例如数据库URL或凭据,但如果我将它们包含在 app.properties
中,则无法在插件部分中评估它们(例如,我将${endpoint}
的值作为数据库端点)。如何让来自文件的配置文件对于插件部分可用?
PS: 是的,如果我直接将这些属性添加到
pom.xml
的<profiles>
标签下,它们是可访问的,但我更愿意将密码保存在 pom 之外。
pom.xml
是唯一的障碍,可以将它们与指向密码文件(或仅相对于某个已知位置的文件名)的路径进行交换,以减少泄漏的可能性。 - Victor Sorokinmaven-resources-plugin
将允许您将每个配置文件属性值放入模板文件中,稍后进行处理:http://portofino.manydesigns.com/en/docs/portofino3/tutorials/using-maven-profiles-and-resource-filtering - Victor Sorokinpom.xml
文件中。 - Boris Strandjev