当前位置: 首页 > 面试题库 >

为dev / qa / prod配置Java EE 6

红弘盛
2023-03-14
问题内容

我有一个用Maven生成的Java EE 6应用程序,在NetBeans 7中编码,并部署在GlassFish
3.1.2上。当我快要完成时,我发现自己正在部署演示版本。

问题是,我没有针对不同环境(如dev,QA,demo,prod等)构建的简单方法。对于某些东西,我一直在使用Java类,该类具有大量返回的静态getter值基于环境常数的值。但这对我有条件设置没有帮助

  • javax.faces.PROJECT_STAGE(web.xml)
  • 数据库凭证(glassfish-resources.xml
  • 邮件服务器(glassfish-resources.xml)
  • JPA日志记录级别(persistence.xml)

可能还有许多其他我现在无法考虑的事情,这些事情分散在XML文件中。

有没有什么方法可以定义这些配置文件的多个版本,并仅在构建时设置标志以选择环境,而在未指定环境的情况下默认为dev?在这种情况下,有什么办法可以让Maven为我工作?


问题答案:

您可以使用maven来实现。特别是使用资源过滤。

首先,您可以定义配置文件列表:

  <profiles>
    <profile>
      <id>dev</id>
      <properties>
        <env>development</env>
      </properties>
      <activation>
        <activeByDefault>true</activeByDefault> <!-- use dev profile by default -->
      </activation>
    </profile>
    <profile>
      <id>prod</id>
      <properties>
        <env>production</env>
      </properties>
    </profile>
  </profiles>

然后,您需要过滤的资源:

  <build>
    <outputDirectory>${basedir}/src/main/webapp/WEB-INF/classes</outputDirectory>
    <filters>
      <filter>src/main/filters/filter-${env}.properties</filter> <!-- ${env} default to "development" -->
    </filters>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.xml</include>
          <include>**/*.properties</include>
        </includes>
        <filtering>true</filtering>
      </resource>
    </resources>
  </build>

然后基于src/main/filters目录中的配置文件的自定义属性:

filter-development.properties

# profile for developer
db.driver=org.hsqldb.jdbcDriver
db.url=jdbc:hsqldb:mem:web

filter-production.properties

# profile for production
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/web?createDatabaseIfNotExist=true

要使用生产配置文件,您可以使用mvn clean package -Pprodcommand 打包war 。

在这里,您可以看到在maven中使用配置文件的示例项目。



 类似资料:
  • 本文向大家介绍springboot多环境(dev、test、prod)配置详解,包括了springboot多环境(dev、test、prod)配置详解的使用技巧和注意事项,需要的朋友参考一下 我们在开发应用的时候,通常同一套程序会被应用和安装到几个不同的环境中,比如开发、测试、生产等。 其中每个环境的数据库地址、服务器端口等配置都不同。如果在为不同环境打包时都要频繁的修改配置文件,那必将是个非常繁

  • 问题内容: 我想创建一个Dockerfile,它将能够构建三个不同的映像(此刻一个)。这些映像仅在配置文件中有所不同。 我正在尝试: 创建三个不同的Docker文件(不起作用,因为dockerfile需要命名为Dockerfile并且位于上下文根目录中 寻找一种将参数传递给docker build命令的方法-找不到 使用ONBUILD命令-我创建了一个主文件和三个特定的文件,它们将特定的conf文

  • 类型: Boolean 默认值: true 配置 Nuxt.js 应用是开发模式还是生产模式。 dev 属性的值会被 nuxt 命令 覆盖: 当使用 nuxt 命令时,dev 会被强制设置成 true 当使用 nuxt build, nuxt start 或 nuxt generate 命令时,dev 会被强制设置成 false 所以,在 编码中使用 nuxt.js 时才会用到该配置。 例如 (n

  • 我正在研究HELM图表,但我无法加入我们如何使用模板/deployment.yaml、values.yaml和a deployment.yaml来建立相同的图表。 注: 它是同一个环境变量,将根据部署环境保存不同的值。

  • 我想添加新的日志文件MyNewLog.log,我不想在不影响现有日志的情况下,在不同的环境中使用不同的日志级别。dev环境和prod环境的级别在下面的描述中提到: 用于开发环境 级别错误处于活动状态 级别信息处于活动状态 级别调试处于活动状态(开发人员的默认级别) 我添加了一个新的appendermyNewLog,并将默认级别设置为DEBUG,然后创建了一个名为myNewLog的3个记录器,每个记

  • config.js里怎么配置,配置好后又怎么知道打的包是开发环境的包还是生产环境的包? app是不是不能打包?有人试过么?