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

Java Maven构建过程/部署&;运行时的属性,java,maven,deployment,maven-2,build-process,Java,Maven,Deployment,Maven 2,Build Process,我有一个vaadin项目,有maven和一些财产。 属性包括文件路径、文件名等 我还为开发和生产创建了maven配置文件。 对于开发,我的应用程序使用jetty运行,在生产环境中应该使用Tomcat8运行。(我的目标是一个.WAR文件) 到目前为止,一切正常,但现在我需要准备生产构建和“上线”。所以我需要创建不同的属性,一个用于开发,一个用于生产 但是应用程序需要根据环境加载正确的属性,对吗?因此,如果本地计算机使用属性a,则使用属性B 在这种情况下,最佳做法是什么? 我该如何处理我的属性和po

我有一个vaadin项目,有maven和一些财产。 属性包括文件路径、文件名等

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

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

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

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

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

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


抱歉,这是我的第一次制作版本

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

  • 应用程序类路径中的预定义位置
  • 文件系统上的预定义位置
  • 由启动参数指定的位置(CLASSPATH或FS)(例如:
    -Dmyapp.config=…
  • 指向正确位置的JNDI环境属性
  • 以一种方式将上述所有因素结合在一起
根据您的部署模型,将属性保留在
pom.xml
中可能不方便,因为您通常不希望在其中或源代码中的任何位置使用生产数据库密码

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

然后,如果您需要为您使用的所有环境配置正确的属性(例如,如果您要铺开一整条街),我建议您查看一些配置器/配置管理器,例如、,等等。

使用此工具,您可以基于活动配置文件包括/排除资源


或者,您可以使用

将其作为软件包过程的一部分,因为我的应用程序没有数据库,所以没有用户/密码。我不确定我是否理解您关于externalise属性的建议。我已经有了不同的.properties文件。这是您的意思吗?–是的,您没有提到要在t之外的配置他
pom.xml
,因此我认为提及外部属性文件是合适的。然后,我建议您的构建过程不应负责为本地以外的环境生成属性。