Maven:共享插件和配置文件构建插件中的相同artifactID

时间:2013-09-12 08:46:44

标签: java maven pom.xml maven-antrun-plugin

我有一个maven pom.xml,它将运行一组ant任务。某些任务仅适用于特定配置文件,而某些任务仅适用于所有配置文件。这是我的

<build>
    <plugins>
        <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.1</version>
            <executions>
                <execution>
                    <phase>test</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>
                    <configuration>
                    <tasks>
                        <!-- Some of my common task -->
                    </tasks>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
<build>

<profiles>
    <profile>
        <id>developement</id>
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.1</version>
                    <executions>
                        <execution>
                            <phase>test</phase>
                            <goals>
                                <goal>run</goal>
                            </goals>
                            <configuration>
                            <tasks>
                                <!-- Task specifics for profile -->
                            </tasks>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        <build>
    </profile>                      
</profiles>

我使用以下命令运行项目

mvn clean install -P developement

在构建此项目时,常见任务未运行。配置文件中的任务仅运行。是不是因为我在共享和配置文件插件中使用相同的artifactID??

我的环境:

Java 1.6 Maven 2.2.1 Windows 7 64位

1 个答案:

答案 0 :(得分:1)

显示的两个执行都缺少<id>个元素。因此,Maven使用其默认执行ID,并且配置文件执行将覆盖公共执行ID。

要修复此问题,请使用您选择的值为这两个ID添加ID。

   <!-- common configuration -->
        <executions>
            <execution>
                <id>antrun-common</id>
                <phase>test</phase>
    ....
   <!-- development profile configuration -->
        <executions>
            <execution>
                <id>antrun-development</id>
                <phase>test</phase>