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这已经讨论过很多次了。尝试使用搜索。