Maven打包 - 构建一个环境文件?

时间:2017-12-22 22:18:32

标签: java maven

我使用maven构建一些java项目并将其编译为Jar
和这个jar一起,我有一些特定于环境的配置文件 是否可以让maven创建多个配置文件
给予额外的"环境文件"

配置文件内容:

server_url={SERVER_URL}
server_port={SERVER_PORT}

环境文件1(用于开发)

SERVER_URL=DEV_SERVER
SERVER_PORT=8080

环境文件2(适用于qa)

SERVER_URL=QA_SERVER
SERVER_PORT=8091

所以输出将是:

the_main.jar
config_dev.ini
config_qa.ini

更新
为了澄清,我有多个文件,我想只保留一个敌人的开发,例如:

  • application.xml
  • application.db.ini
  • application.config.ini

我想要的是在每个文件中植入变量,如下所示:

  • application_DEV.xml
  • application_QA.xml
  • application.db_DEV.ini
  • application.db_QA.ini
  • application.config_DEV.ini
  • application.config_QA.ini

2 个答案:

答案 0 :(得分:2)

我认为您可以结合使用Maven资源过滤和Maven配置文件功能来完成此任务。

<强> Maven Profiles

<强>的pom.xml

<project>
  ...
  <profiles>
    <profile>
      <id>DEV</id>
      <properties>
        <config.server>DEV_SERVER</config.server>
        <config.port>8080</config.port>
      </properties>
    </profile>

    <profile>
      <id>QA</id>
      <properties>
        <config.server>QA_SERVER</config.server>
        <config.port>8091</config.port>
      </properties>
    </profile>
  </profiles>
  ..
</project>

使用个人资料运行Maven

  

-P<profile>

DEV

mvn ... -PDEV

QA

MVN ... -PQA

<强> Filtering with Maven Resources Plugin

过滤激活

<project>
  ...
  <name>My Resources Plugin Practice Project</name>
  ...
  <build>
    ...
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
      ...
    </resources>
    ...
  </build>
  ...
</project>

配置文件

server_url=${config.server}
server_port=${config.port}

我希望这会对你有所帮助。

答案 1 :(得分:0)

这可以通过使用maven-antrun-plugin来实现。

首先,您应该声明要写入文件的环境变量

<properties>
   ...    
   <server.dev>DEV_SERVER</server.dev>
   <port.dev>8080</port.dev>
   <server.qa>QA_SERVER</server.qa>
   <port.qa>8091</port.qa>
</properties>

假设您的文件src/main/resources/config.ini包含所有其他内容,但这几个参数可以&#34;乘以&#34;该ant copy&amp; concat&amp; maven-antrun-plugin任务。

然后配置<plugins> ... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.8</version> <dependencies> <dependency> <groupId>ant-contrib</groupId> <artifactId>ant-contrib</artifactId> <version>1.0b3</version> <exclusions> <exclusion> <groupId>ant</groupId> <artifactId>ant</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.ant</groupId> <artifactId>ant-nodeps</artifactId> <version>1.8.1</version> </dependency> </dependencies> <executions> <execution> <id>create_file</id> <phase>compile</phase> <configuration> <target> <taskdef resource="net/sf/antcontrib/antlib.xml" classpathref="maven.compile.classpath" /> <for list="qa,dev" param="ENV"> <sequential> <copy file="src/main/resources/config.ini" tofile="target/config_@{ENV}.ini"/> <concat destfile="target/config_@{ENV}.ini" append="true"><![CDATA[ SERVER=${server.@{ENV}} PORT=${port.@{ENV}}]]> </concat> </sequential> </for> </target> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins> 以运行编写这些文件的脚本

{{1}}