Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用artifactory/maven的配置和属性文件的最佳实践_Java_Maven_Artifactory - Fatal编程技术网

Java 使用artifactory/maven的配置和属性文件的最佳实践

Java 使用artifactory/maven的配置和属性文件的最佳实践,java,maven,artifactory,Java,Maven,Artifactory,我们有很多java属性文件以及JBoss配置文件需要与我们的应用程序一起部署。目前,我们有一个maven构建,它将所有的.jar和.war文件放入artifactory,但不包括.property文件或JBoss配置。是否有将这些存储在artifactory中的最佳实践?如果它们不应该存储在那里,那么它们应该存储在哪里,以便能够轻松地与二进制文件一起部署?如果它们是应用程序配置,则必须与应用程序一起提供,即在jar文件或war文件中。单独部署它们不是一个好主意 最好将它们放在maven项目的文件

我们有很多java属性文件以及JBoss配置文件需要与我们的应用程序一起部署。目前,我们有一个maven构建,它将所有的.jar和.war文件放入artifactory,但不包括.property文件或JBoss配置。是否有将这些存储在artifactory中的最佳实践?如果它们不应该存储在那里,那么它们应该存储在哪里,以便能够轻松地与二进制文件一起部署?

如果它们是应用程序配置,则必须与应用程序一起提供,即在jar文件或war文件中。单独部署它们不是一个好主意

最好将它们放在maven项目的文件夹中,如果是WEB应用程序,则放在WEB-INF中


除了部署或存储它们之外,如果您希望在基础架构中的各个组件之间共享它们,请考虑一种更好的方法,例如将它们持久化到键值存储、数据库或共享文件中。

将属性文件保留在Artifactory中是一种很好的做法。确保通过使用属性(例如构建名称、构建编号等)将它们与应用程序二进制文件绑定在一起。您可以通过使用Artifactory的功能并在部署期间标记工件和属性文件来实现自动化。

我认为应用程序服务器配置文件应该与应用程序文件分开

如果您考虑spring配置文件,它们与应用程序是硬耦合的,因此它们应该位于resources目录中,但应用程序服务器配置文件与应用程序不耦合,因此它们应该单独存储

我认为最好的方法是使用一些Maven插件来满足这一需求

比如:

拜访


当然,artifactory可能是保存配置文件的好位置,不是保存在jar中,而是单独保存。

没有最佳实践,两种解决方案都可以。实际上,这通常取决于使用的部署工具、应用程序体系结构(例如,配置文件是否在组件之间共享?等等)、环境的数量、对配置文件加密的需要,以及发布周期(是否需要为每次配置更改重新打包?)等


例如,如果使用ansible,默认设置是将配置和部署说明存储在VCS中。这意味着在这种情况下,所有留在Artifactory中的都是二进制文件。

一旦将它们压缩到jar和wars中,就很难更改它们。将它们放在一边可以简化运行时配置。有些配置包含在资源中(如Spring应用程序上下文文件),但许多配置要么需要频繁更改(在jar/war中很难更改),要么应用于多个二进制文件(违反了原则。此外,JBoss配置文件根本不适合在资源中。只需遵循最佳实践。您的问题与maven有关,我所解释的只是针对特定于应用程序的默认配置。如果您需要更好的控制,您必须实现访问y外部配置文件的机制。)我们的应用程序或使用类似spring的框架为您执行此操作。例如,您可以确定应用程序的主文件夹(使用环境变量、Java系统属性或它们与回退的组合…),并将配置文件放在主文件夹中的conf目录下。