如何参数化Maven文件(pom.xml)?

时间:2016-03-18 13:25:40

标签: java spring maven

我有一个spring boot应用程序,我想根据我正在构建的配置文件打包它,例如当我发布配置文件x时,我希望maven构建为jar;但在使用个人资料y进行构建时,我希望maven能够构建为war

我想要类似的东西:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0.0</version>
  <package>${buildMethod}</package>
</project>

${buildMethod}是包装的类型。

这将通过执行命令mvn package -P buildProfile来决定。

2 个答案:

答案 0 :(得分:3)

也许这会有所帮助:

<profiles>   
  <profile>
      <id>war</id>
      <properties>
          <deploy.type>war</deploy.type>
      </properties>
  </profile>
  <profile>
      <id>jar</id>
      <properties>
          <deploy.type>jar</deploy.type>
      </properties>
  </profile>
</profiles>

然后只使用此属性占位符${deploy.type}

答案 1 :(得分:1)

您可以轻松地将包含属性列表的配置文件添加到您的pom文件中。

使用构建:

  • mvn package - 默认构建WAR(隐式)
  • mvn package -P deployWar - 构建WAR
  • mvn package -P deployJar - 构建JAR
<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0.0</version>

  <package>${deployment.type}</package>

  <profiles>

    <!-- This profile deploys the application as a WAR (default) -->
    <profile>
      <id>deployWar</id>
      <properties>
        <deployment.type>war</deployment.type>
      </properties>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
    </profile>

    <!-- This profile deploys the application as a JAR -->
    <profile>
      <id>deployJar</id>
      <properties>
        <deployment.type>jar</deployment.type>
      </properties>
    </profile>

  </profiles>
</project>