【问题标题】:I want to single deploy WAR file for all environment DEV/UAT/PROD but i ahve dependency of properties file let me know how i will do?我想为所有环境 DEV/UAT/PROD 单独部署 WAR 文件,但我对属性文件的依赖让我知道我将如何做?
【发布时间】:2016-10-01 02:30:49
【问题描述】:

目前在我的比赛中,他们正在通过创建不同的 WAR 文件在不同的 2 环境中部署 WAR 文件。 Exp:对于 DEV,他们将创建和部署, 对于 UAT,他们将创建和部署 由于属性文件的某些依赖性。

所以我想要解决方案,我将如何在服务器端或 WAR 文件中配置以部署仅由开发人员创建的单个 WAR 文件 这也是一个最佳实践。

听别人说,我们可以通过在服务器端配置与环境相关的环境属性来做到这一点。

请给出应该可以正常工作的完美解决方案...

希望 +ve 回答。 谢谢!

【问题讨论】:

  • 这个问题涵盖了完整的企业应用程序设置。完全解释解决方案非常困难。
  • 在这种情况下,您是否有任何涵盖这些内容的教程,我将通过该教程。或任何文件,如果你有可以分享吗??
  • 对我来说似乎是一个合法的问题......我想知道为什么它会被否决

标签: java maven tomcat deployment


【解决方案1】:

您可以在项目中创建 2 个属性文件

  1. Application.local.properties
  2. Application.dev.properties

当你执行构建时设置你的虚拟机参数

当你想使用本地然后设置为 -Denv=local

对于开发:-Denv=dev

这将读取相关的。

【讨论】:

    【解决方案2】:

    您可以根据 DEV、UAT 等环境保留不同的属性文件。 现在,在您不同的环境中,您可以保留一个环境变量,例如 env 作为 DEV 和 UAT。

    在 Tomcat 中,可以通过在 vm 选项 -Denv=DEV 或 -Denv=UAT 中简单地设置它。

    现在您可以创建相同的 war 文件,该文件将包含所有环境的所有配置文件,并根据您的环境变量获取配置文件。

    希望能回答您的问题。

    示例:下面是战争插件

    <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.6</version>
        <configuration>
            <failOnMissingWebXml>false</failOnMissingWebXml>
            <warName>${app.jvm}</warName>
            <webResources>
                <resource>
                    <directory>${basedir}/src/main/resources/config</directory>
                    <targetPath>WEB-INF</targetPath>
                    <filtering>true</filtering>
                </resource>
            </webResources>
        </configuration>
    </plugin>
    

    这里我们复制 *-dev.properties *-uat.properties

    现在例如,如果您在本地使用 tomcat 服务器

    <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
            <port>8086</port>
            <ignorePackaging>true</ignorePackaging>
            <systemProperties>
                <env>dev</env>
            </systemProperties>
        </configuration>
    </plugin>
    

    这样你可以在tomcat中设置环境变量。在基于 System.getProperty("env") 的应用程序启动时,您可以选择配置文件。

    【讨论】:

    • 您能否详细说明一下?比如在哪里设置环境变量以及我们的战争将如何读取它?
    • 或者任何人都可以帮我解决这个问题,最后我们决定将属性文件保存在服务器位置而不是 WAR 文件中。但我需要帮助 1. 在服务器中保存的位置 2. 在部署 WAR 时我们将如何从服务器位置读取属性文件 3. 请为此提供一些代码谢谢
    • 我已经用示例更新了答案,请在本地尝试。对于JVM启动中的开发环境或UAT环境,可以设置这些系统属性。
    • 但是这里的属性文件会在war文件里面吗?但我想保留在服务器位置,而不是在 WAR 文件中,例如用于 Dev env 的 DEV 服务器和用于 UAT env 的 UAT 等
    • 在这种情况下,您也可以在 JVM 中设置环境变量 JAVAOPTS -Denv=dev 并使用将在服务器启动期间运行的任何脚本并复制您各自的配置文件。
    猜你喜欢
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多