Maven插件可防止另一个插件运行

时间:2013-07-21 10:18:38

标签: maven

我在构建中使用了两个maven插件,其中一个为另一个准备文件。具体来说,我使用maven-assembly-plugin来构建jar文件,然后使用jdeb来创建debian包。我的问题是,一旦第二个(jdeb)启用,第一个(maven-assembly-plugin)就永远不会运行。

我的pom.xml就在这里:https://gist.github.com/knyttl/fa956d56b15bc2849d60

谢谢!

编辑:

我也尝试使用个人资料:https://gist.github.com/knyttl/dd43a7e7df87c406b823

但是在调用时它不会按预期工作:mvn package -Passembly,debian。我是否总是要写-P参数?有没有办法定义要运行的“默认配置文件”?我想只调用mvn package来运行两个配置文件。

2 个答案:

答案 0 :(得分:2)

程序集插件未配置execution。向程序集插件添加执行,类似于以下内容:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <descriptors>
            <descriptor>jarlib.xml</descriptor>
        </descriptors>
        <outputDirectory>assembly</outputDirectory>
        <workDirectory>target/assembly/work</workDirectory>
        <appendAssemblyId>false</appendAssemblyId>
        <finalName>...</finalName>
        <attach>false</attach>
        <archive>
            <manifest>
                <mainClass>...</mainClass>
            </manifest>
        </archive>
    </configuration>
    <executions>
        <execution>
            <id>do-assembly</id>
            <goals>
                <goal>single</goal>
            </goals>
            <phase>package</phase>
        </execution>
    </executions>
</plugin>

此外,如果要在jdeb之前执行程序集插件,请确保在jdeb之前的POM中定义程序集插件。 As of Maven 3.0.3,定义为在同一阶段执行的插件将使用POM的顺序(在此顺序是任意的之前)。

除非您希望在某些情况下能够禁用插件的执行,否则无需使用配置文件。

答案 1 :(得分:1)

我建议制作个人资料。由于他们可能都在使用包阶段,因此只会调用一个。使用配置文件,您可以将它们分开。