Maven从Ant插件mojo解包依赖项

Maven从Ant插件mojo解包依赖项,maven,ant,maven-plugin,Maven,Ant,Maven Plugin,我有一个Maven ant插件,它捆绑了一个ant任务库。其中一个有很多CI任务 我有插件工作,可以点击运行的任务 mvn -U ci:options 这将为不同的操作打开一个菜单 我遇到的问题是,我需要在执行任务之前解决pom中的依赖关系 从阅读中我会认为我可以补充 <execution> <goal>dependency:unpack-dependencies</goal> </execution> 依赖项:解压缩依赖项 对于定

我有一个Maven ant插件,它捆绑了一个ant任务库。其中一个有很多CI任务

我有插件工作,可以点击运行的任务

mvn -U ci:options
这将为不同的操作打开一个菜单

我遇到的问题是,我需要在执行任务之前解决pom中的依赖关系

从阅读中我会认为我可以补充

<execution>
    <goal>dependency:unpack-dependencies</goal>
</execution>

依赖项:解压缩依赖项
对于定义mojo的pluginMetaData xml文件,尽管这似乎没有做任何事情

ci.mojos.xml

<pluginMetadata xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/plugin-metadata-1.0.0.xsd">
<mojos>
    <mojo>
        <!-- target name to call in ant script -->
        <call>run</call>
        <!-- mojo goal name -->
        <goal>options</goal>
        <execution>
            <goal>dependency:unpack-dependencies</goal>
        </execution>
        <parameters>
            <parameter>
                <name>artifactId</name> 
                <property>artifactId</property> 
                <required>true</required> 
                <readonly>true</readonly>
                <type>java.lang.String</type>
                <defaultValue>${project.artifactId}</defaultValue>
                <description>Project Artifact Id</description>
            </parameter>
  ....

跑
选择权
依赖项:解压缩依赖项
人工的
人工的
真的
真的
java.lang.String
${project.artifactId}
项目工件Id
....
ci.build.xml


非常感谢您的帮助


James发现了声称其已修复但不认为其已发布的文件。可以解释这不是一个修辞问题:
requiresdependencysolution
requiresDependencyCollection
是否有助于您将
unpack dependency
委托给Maven?嗨,我试过了,虽然我最初在一个阶段之外运行它,但它确实有效。如果我运行mvn compile ci:options,那么它会下载依赖项。。。我重新考虑过这个问题,并尝试了不同的解决方案。当我有它的工作细节。感谢您的时间,我通过使用java资源而不是include解决了最初的include问题,因为所有ant脚本都在类路径上。尽管ant宏仍然依赖于依赖项,但一切都很好。如果我将依赖项添加到项目pom中,所有这些都可以正常工作。理想情况下,我希望在插件pom中详细说明依赖项。虽然我找不到办法把它们打开。pluginMetaData修复程序允许在运行主插件目标之前触发目标,尽管这似乎是插件的本地目标。依赖项:解包依赖项来自外部插件,因此不起作用。插件的依赖项在插件的POM中定义或插件的使用位置之间不应有本质区别。
    <property name="project.home" location="."/>
    <property name="target.dir"       value="${project.home}/target"/>
    <property name="build.dir"        value="${target.dir}/build"/>
    <property name="dependency.dir"   value="${target.dir}/dependency"/>

    <!-- Add contrib to the classpath -->
    <taskdef resource="net/sf/antcontrib/antlib.xml"/>

    <!-- Include ant utils from the shared resource -->
    <include file="${dependency.dir}/shared_ant/build.xml"/>

    <!-- Continuous Integration Options -->
    <target name="run" description="Continuous Integration Options">        
          <ci.options/>
    </target>
</project>