在maven插件中包含一堆ant任务?

时间:2011-01-25 20:30:18

标签: ant maven

我有一堆maven项目需要在构建/部署阶段使用maven-antrun-plugin执行相同的ant任务序列。

我不想在父项目中覆盖maven-antrun-plugin的实现,因此使用此插件的所有其他项目都将继承这些步骤。

因此,我正在研究编写自己的maven插件,该插件可作为maven-antrun-plugin包装器,具有特殊的ant任务序列。但目前我没有成功这样做。

我看过:

http://maven.apache.org/guides/plugin/guide-ant-plugin-development.html

但遇到了这里描述的同样问题:

http://www.mail-archive.com/users@maven.apache.org/msg92676.html

(使用上述帖子中建议的版本无法解决问题)

来自: http://www.mail-archive.com/users@maven.apache.org/msg115264.html 看起来教程只适用于maven2:

我也试图从这里偷东西:

http://maven.apache.org/guides/plugin/guide-java-plugin-development.html

但仍然没有可用的插件。

我要包装的插件如下所示:

      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <id>test</id>
            <phase>deploy</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <tasks>
                <!--  execute task A,B and D -->
              </tasks>
            </configuration>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant-jsch</artifactId>
            <version>1.8.1</version>
          </dependency>
        </dependencies>
      </plugin>
    </plugins>
  </build>

是否可以将任务A,B和C的序列放在另一个插件中,然后在需要的地方使用该插件?

我还尝试将antrun插件移动到父级,并为某些将继承设置为false的子级禁用它:

http://maven.apache.org/guides/mini/guide-configuring-plugins.html#Using_the_inherited_Tag_In_Build_Plugins

但是父进程中定义的任务仍然执行,因此将继承设置为false似乎不起作用。

1 个答案:

答案 0 :(得分:0)

如果您想在父级中定义<plugin>并允许孩子根据需要使用它,那么您可以在<pluginManagement>部分中对其进行定义。通过这样做,父级将不会执行插件。它只会为那些在他们的pom中定义这个插件的孩子执行。

对于ant任务的排序,在ant脚本中创建task会不会更简单,它会依次调用任务A,B和C并继续使用默认的maven-antrun-plugin功能?