为开发/QA/产品配置 Java EE 6

2024-04-29

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

问题是我没有任何非常简单的方法来构建不同的环境,例如开发、QA、演示、产品等。对于某些东西,我一直在使用带有一堆返回的静态 getter 的 Java 类基于环境常量值的值。但这对我进行条件设置没有帮助

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

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

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


您可以使用maven http://maven.apache.org/为了实现这一点。特别是使用资源过滤 http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html.

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

  <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目录:

过滤器开发.properties

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

and

过滤器生产.properties

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

要使用生产配置文件,您可以使用以下命令打包 warmvn clean package -Pprod命令。

Here https://github.com/paukiatwee/webapp-bootstrap你可以在maven中看到使用profile的示例项目。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为开发/QA/产品配置 Java EE 6 的相关文章

随机推荐

  • 是否可以重载 *static_cast* 运算符?

    我定义了一个类A 实际属性无关 是否可以定义一个专业化static cast
  • 如何获取Access数据库中已更改的记录详细信息

    我有一个 Access 数据库 其中有许多表和数千条记录 如果有人更改其中的任何数据 任何行 甚至只是一个单元格 有什么方法可以知道哪些特定行或单元格已更改Access 数据库 任何属性或者我应该使用任何触发器吗 几年前我在使用 MSSQL
  • 在ListView.builder() flutter中动态创建单选按钮Group

    我想创建一个这样的用户界面 最后 我得到了所有选定单选按钮的详细信息 这是我的完整代码 当我尝试这样做时 所有单选按钮都转向一侧 import package flutter cupertino dart import package fl
  • 如何在mySQL数据库中安全地插入代码

    我正在构建一个网站 用户可以使用 PHP 和 mySQL 数据库来存储代码片段 但我不知道如何安全地将用户输入的代码插入我的数据库 我无法使用我通常使用的 安全 功能来转换输入 trim stripslashes等 因为重点是您可以将代码视
  • Reactjs:追加而不是用渲染方法替换

    我是 ReactJs 的新手 我脑子里有很多问题 例如我想追加而不是用 render 方法替换 Can I 安全简单做这个 创建一个临时 div var temp document createElement div ReactDOM re
  • 用于计算井字游戏独特状态的高效算法

    我正在尝试构建一个井字游戏来演示和实验机器学习算法 并且我发现了一个有趣的问题 例如 井字棋板可以是mirrored 但出于机器学习的目的 这两种状态是等效的 x o o x o o x x o o 同样地旋转 x o x o o o x
  • 显示部分/div 取决于链接中的哈希值 # 后

    我有以下页面 section height 1000px background yellow margin 50px section Section one section section Section two section 如果用户来
  • 将白色反转为黑色 uiimage

    我有以下 UIImage 使用 Objective C 我希望能够将白色反转为黑色 反之亦然 任何帮助 将不胜感激 Swift Using CIContext代替 UIImage CIImage see https stackoverflo
  • 在 WP7 中进行同步 Http/REST 调用?

    我一直在开发 Windows Phone 7 应用程序 并尝试使用 HttpWebRequest GetResponse 进行同步 REST 调用 但编译器抱怨 GetResponse 不可用 我在HttpWebRequest中找到了Beg
  • 如何使 PHPunit 在警告时返回非零退出状态

    当在一些失败并出现警告的测试中调用 PHPunit 时 我得到 phpunit c phpunit xml group app Warning MongoCollection insert expects parameter 1 to be
  • jQuery 动画,不流畅

    你知道动画猫如何才能移动得更流畅吗 很卡顿 不知道如何让它变得更流畅 jQuery fx interval 没有帮助 http christianhaller com jquery animate img html http christi
  • LibUsb 声明接口访问被拒绝 Java

    我希望能够从 USB 计步器读取数据 我正在 Java 中尝试此操作 并且使用 LibUsb 和 Usb4Java 库 我似乎无法认领 USB 管道或类似的东西 我正在使用的代码 final Context context new Cont
  • VB.NET 使用 system.net.tcpclient 编写 telnet 客户端

    当我连接到我的Solaris盒子时这对我不起作用 服务器正在回传 有谁知道我做错了什么 Imports System Net Imports System Net Sockets Imports System Text Public Cla
  • 添加滑动删除UITableViewCell

    我正在制作一个清单应用程序UITableView 我想知道如何添加滑动删除UITableViewCell 这是我的 ViewController swift import UIKit class ViewController UIViewC
  • itunesconnect 应用程序 - 恢复到以前的版本

    我发布了我的应用程序的更新并获得批准 尽管它包含一个严重的本地化错误 大多数用户都得到了错误的语言 但它还是获得了批准 有什么方法可以快速恢复到以前的版本 暂停当前版本的当前下载 或者其他任何可能有助于解决此问题的方法 我几年前确实读过以下
  • nodejs 强大的改变 uploadDir

    我有一个项目正在努力完成我想上传图像 我可以上传图像 但不能上传应该上传的空中图像 好的 让我们编写代码 app post register function req res var form new formidable Incoming
  • Android 中客户端服务器通信的选项

    我目前正处于论文项目的研究阶段 我的项目是一个针对移动设备的订票系统 我选择以 Android 为目标 我预计需要带有中央服务器的客户端 服务器架构 因此目前正在研究 Android 如何与这样的服务器进行通信 服务器将授予客户端访问票务信
  • 观察嵌套对象的属性

    小提琴示例 http emberjs jsbin com aviyUnA 9 edit html js 输出 http emberjs jsbin com aviyUnA 9 edit html js output 这是我的模型 name
  • 使用参与者模型进行基于时间的模拟

    我们有一个单线程应用程序 可以模拟数十万个对象随着时间的推移与共享内存模型的交互 显然 它无法在多 CPU 硬件上进行扩展 在阅读了一些有关基于代理的建模和函数式编程 参与者模型的内容后 我正在考虑使用消息传递范例进行重写 这个想法非常简单
  • 为开发/QA/产品配置 Java EE 6

    我有一个使用 Maven 构建的 Java EE 6 应用程序 在 NetBeans 7 中编写代码并部署在 GlassFish 3 1 2 上 当我接近完成时 我发现自己正在部署演示版本 问题是我没有任何非常简单的方法来构建不同的环境 例