Java maven中的概要文件-选择要内置的文件取决于maven中的概要文件
我有Java maven中的概要文件-选择要内置的文件取决于maven中的概要文件,java,maven,Java,Maven,我有application.properties文件。我希望能够使用另一个应用程序。文件中的属性取决于maven中选择的配置文件。你能告诉我怎么做吗 以上是我对这个问题的看法。也许你知道一些更好的?我的意思是选择jdbc连接的问题。这意味着,根据配置文件的不同,我希望能够选择不同的jdbc URL。类似于: <profiles> <profile> <id>dev</id> <activation>
application.properties
文件。我希望能够使用另一个应用程序。文件中的属性取决于maven中选择的配置文件。你能告诉我怎么做吗
以上是我对这个问题的看法。也许你知道一些更好的?我的意思是选择jdbc连接的问题。这意味着,根据配置文件的不同,我希望能够选择不同的jdbc URL。类似于:
<profiles>
<profile>
<id>dev</id>
<activation>
<!-- This profile will be default in your IDE -->
<activeByDefault>true</activeByDefault>
</activation>
<build>
<resources>
<resource>
<directory>src/main/resources-dev</directory>
</resource>
</resources>
</build>
</profile>
<profile>
<id>prod</id>
<build>
<resources>
<resource>
<directory>src/main/resources-prod</directory>
</resource>
</resources>
</build>
</profile>
</profiles>
使用dev
profile:mvn clean install构建的命令
命令
使用prod
profile:mvn干净安装-Pprod
构建,类似于:
<profiles>
<profile>
<id>dev</id>
<activation>
<!-- This profile will be default in your IDE -->
<activeByDefault>true</activeByDefault>
</activation>
<build>
<resources>
<resource>
<directory>src/main/resources-dev</directory>
</resource>
</resources>
</build>
</profile>
<profile>
<id>prod</id>
<build>
<resources>
<resource>
<directory>src/main/resources-prod</directory>
</resource>
</resources>
</build>
</profile>
</profiles>
使用dev
profile:mvn clean install构建的命令
命令
使用prod
profile构建:mvn干净安装-Pprod
虽然从技术上讲这非常简单,您可以参考@ZhekaKozlov的答案,但这是一个非常糟糕的主意。如果DB的密码更改,应用程序本身是否应该更改?否-应用程序保持不变,更改的是应用程序的配置
通过使用Maven配置文件,您正在为不同的环境创建一个新的二进制文件,这实际上意味着为每个配置选项创建一个新的应用程序。因此,您可以选择两个选项来代替此操作:
- 如果允许,您可以将所有配置文件放在二进制文件中,然后在启动过程中进行选择(
-Denv=prd
)。但您仍然需要构建一个新的二进制文件,以防属性发生变化
- 最好的选择是从二进制文件外部化配置。这意味着在启动过程中指定属性文件的位置:
-Dconf=/etc/appname/application.properties
持续交付的黄金法则——构建一次就可以在任何地方运行。您应该始终能够从任何环境下载二进制文件,并使用不同的属性集在本地运行它。从技术上讲,这非常简单,您可以参考@ZhekaKozlov的答案,但这是一个非常糟糕的主意。如果DB的密码更改,应用程序本身是否应该更改?否-应用程序保持不变,更改的是应用程序的配置
通过使用Maven配置文件,您正在为不同的环境创建一个新的二进制文件,这实际上意味着为每个配置选项创建一个新的应用程序。因此,您可以选择两个选项来代替此操作:
- 如果允许,您可以将所有配置文件放在二进制文件中,然后在启动过程中进行选择(
-Denv=prd
)。但您仍然需要构建一个新的二进制文件,以防属性发生变化
- 最好的选择是从二进制文件外部化配置。这意味着在启动过程中指定属性文件的位置:
-Dconf=/etc/appname/application.properties
持续交付的黄金法则——构建一次就可以在任何地方运行。您应该始终能够从任何环境下载二进制文件,并使用不同的属性集在本地运行它。有时它可能是一个安全漏洞。开发构建可以包括不应位于生产服务器上的敏感文件。另外,您忘记了桌面应用程序,因为最终用户可能无法在开发模式下运行。我不理解您的观点。。看起来您不理解我的:)我是说配置应该位于二进制文件之外。它们必须通过部署脚本部署到服务器。同样的部署脚本也会下载二进制文件,有时会造成安全漏洞。开发构建可以包括不应位于生产服务器上的敏感文件。另外,您忘记了桌面应用程序,因为最终用户可能无法在开发模式下运行。我不理解您的观点。。看起来您不理解我的:)我是说配置应该位于二进制文件之外。它们必须通过部署脚本部署到服务器。同样的部署脚本也会下载二进制文件。这是否意味着有两个几乎相同的应用程序.prpoerties
文件?@JavaNewbie如果重复太多,您可以使用一个应用程序.properties
进行过滤:您能在这里向我展示这样的过滤示例吗,拜托?@JavaNewbie这已经讨论过很多次了。尝试使用搜索。这是否意味着有两个几乎相同的应用程序.prpoerties
文件?@JavaNewbie如果有太多重复,你可以使用一个应用程序.properties
进行过滤:你能在这里给我展示一下这种过滤的例子吗?@JavaNewbie这已经讨论过很多次了。尝试使用搜索。