2010-11-18 46 views
3

我有一个战争打包的Maven项目,其中我有一个名为myapp.properties的Java属性文件。在这个属性文件中,我存储了一些参数,例如数据库连接参数,这些参数将被webapp使用。要打包在Maven战争项目中的不同文件

  1. 无论是在持续集成环境还是在我的开发环境中,我想在myapp.properties中设置一些测试参数以连接到我的测试数据库。
  2. 同时,我想将这些参数留在最终的战争包中,以便用户可以在部署到他们的环境中时自行添加这些值。最终的战争包应该是持续集成环境中生成的构建工件。

本质上,我想在不同情况下使用myapp.properties文件的两个版本。我的问题是,Maven如何解决这个问题?我在我的开发环境中使用了Eclipse + WTP + m2eclipse,我希望这个解决方案可以和我的开发工具一起使用。

回答

0

我会

pom.xml的尝试,为你的项目(或父POM)

 <build> 
      ... 
     <resource> 
      <directory>src/main/resources</directory> 
      <includes> 
       <include>**/*.properties</include> 
      </includes> 
      <filtering>true</filtering> 
     </resource> 
     ... 
     </build> 
在你的属性文件(S)例如

db.url=${db.url} 

,并在你的settings.xml(见http://maven.apache.org/settings.html#Profiles

<db.url>jdbc:mysql://localhost:3306/testdb</db.url> 

根据您的发展阶段(本地,构建服务器等),可以使用不同的值db.url配置参数

这不会将db.url属性留空,但是每次打包工件时都不希望它真的保持空白吗?

+0

这是使用Maven的配置文件机制。但是,在我的CI环境中,如果测试结果良好,我需要构建测试测试战和生产战争作为可交付成果。在这种情况下,似乎我不能在同一个环境中使用不同的配置文件来区分它们,并且必须为不同的目的构建两个工件? – nybon 2010-11-19 02:08:02

+0

我不知道你的CI环境,但在我们的我们有不同的测试,生产(集成等)设置,这包括不同的配置文件 – 2010-11-19 09:15:07

相关问题