Maven从Ant插件mojo解包依赖项
我有一个Maven ant插件,它捆绑了一个ant任务库。其中一个有很多CI任务 我有插件工作,可以点击运行的任务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> 依赖项:解压缩依赖项 对于定
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>