根据pom中的活动配置文件更改包装

时间:2011-11-23 19:06:20

标签: java maven-2

我有一个用maven编译的项目。我在pom.xml中声明了不同的配置文件。 对于其中一些配置文件,我更喜欢建立一个战争,而对于其他配置文件,我更喜欢一个jar。我用来手动编辑pom.xml文件并将打包变量更改为

<packaging>war</packaging>

<packaging>jar</packaging>

之前

$ mvn clean package -Pchosenprofile

如何告诉mvn与每个配置文件对应的包装,这样我就不需要编辑pom.xml了?

3 个答案:

答案 0 :(得分:97)

如果您想使用个人资料,可以使用以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<project>
    <modelVersion>4.0.0</modelVersion>
    ..
    <packaging>${packaging.type}</packaging>

    <profiles>
        <profile>
            <id>webapp</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <packaging.type>war</packaging.type>
            </properties>
        </profile>
        <profile>
            <id>batch</id>
            <properties>
                <packaging.type>jar</packaging.type>
            </properties>
                </profile>
          </profiles>
</project>

答案 1 :(得分:4)

你看过war插件的attachClasses配置设置了吗?这个简单的设置可以让你在单个maven执行中构建war和jar(默认情况下使用分类器“classes”)。

答案 2 :(得分:1)

我认为你不能。

我能想到两种选择:

  • 有两个单独的模块用于打包,并根据配置文件调用其中一个
  • 让你的模块处于战争状态并调整生命周期(包括/排除构建步骤),具体取决于产生你的jar或战争的配置文件

我更喜欢第二种方法 - 构建服务器可能会构建两种方法,开发人员可以使用正确的配置文件/设置来跳过不需要的类型。