Maven构建过程/部署&运行时的属性

时间:2015-10-23 08:11:39

标签: java maven deployment maven-2 build-process

我有一个带maven和一些属性的vaadin项目。 这些属性包括文件路径,文件名等。

我还为开发和生产创建了maven配置文件。 对于开发我的应用程序使用jetty运行,在生产中它应该与tomcat 8一起运行。(我的目标是.WAR文件)

到目前为止一切正常,但现在我需要为生产构建做准备并“上线”。所以我需要创建不同的属性,一个用于开发,一个用于生产。

但是应用程序需要根据环境加载正确的属性,对吗?因此,如果本地机器使用属性a,则使用属性B.

在这种情况下,最佳做法是什么? 我想我的属性和pom文件怎么办? 构建过程应该如何?

我希望我能清楚地解释清楚,否则我会分享更多信息。

任何想法都会有所帮助。 非常感谢。

PS。对不起,这是我的第一个生产版本!!!

2 个答案:

答案 0 :(得分:1)

最好的方法是以.properties文件或类似格式将您的配置外部化到WAR文件之外,然后让您的应用程序在引导程序中获取此类文件。发现配置文件的常用方法是:

  • 应用程序CLASSPATH
  • 中的预定义位置
  • 文件系统上的预定义位置
  • 启动参数指定的位置(CLASSPATH或FS)(例如:-Dmyapp.config=...
  • 指向正确位置的JNDI环境属性
  • 上述所有内容,以chain of responsibility方式

根据您的部署模型,将属性保留在pom.xml可能不方便,因为您通常不需要,例如那里的生产数据库密码,或者源代码中的任何地方。

本地环境的属性确实可以放在pom.xml中,然后您也可以使用filtering用它们填充属性文件并从应用程序加载此类文件。相同的方法可以与profiles一起使用,以定位多个环境。

然后,如果您需要为您使用的所有环境配置正确的属性(例如,如果您正在推出一条完整的DTAP街道),我建议您查看一些供应商/配置管理员,例如AnsibleSaltChefPuppet等。

答案 1 :(得分:0)

使用Maven Resource Plugin,您可以根据有效个人资料包含/排除资源。

或者您可以使用Maven Assembly Plugin

将其作为打包过程的一部分