我想使用工件中定义的Ant任务。工件存在于主Maven存储库中,并且具有一些依赖性。
我想使用Ivy和Ant来:
到目前为止,我发现的文档并未针对此用例进行优化。相反,它建议写文件ivy.xml,ivysettings.xml;我不喜欢这样,依赖关系足够小,我想在一个构建脚本中适应所有内容。
有什么想法吗?
答案 0 :(得分:1)
常春藤cachepath task是一个可用于创建ANT路径的解析任务。可能不为人所熟知的是,此解析任务也可以内联使用,换句话说,您可以直接指定依赖项而无需常春藤文件。
<ivy:cachepath pathid="tasks.path">
<dependency org="org.codehaus.groovy" name="groovy-all" rev="2.4.7" conf="default"/>
</ivy:cachepath>
对于使用常春藤文件管理多个类路径的相关答案:
以下示例是通过演示常春藤下载与groovy任务相关联的jar来实现的。我还包括了一个用于安装常春藤罐的实用程序目标。
<project name="demo" default="build" xmlns:ivy="antlib:org.apache.ivy.ant">
<available classname="org.apache.ivy.Main" property="ivy.installed"/>
<!--
============
Main targets
============
-->
<target name="resolve" depends="install-ivy">
<ivy:cachepath pathid="tasks.path">
<dependency org="org.codehaus.groovy" name="groovy-all" rev="2.4.7" conf="default"/>
</ivy:cachepath>
</target>
<target name="build" depends="resolve">
<taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" classpathref="tasks.path"/>
<groovy>
ant.echo "Hello world"
</groovy>
</target>
<!--
==================
Supporting targets
==================
-->
<target name="install-ivy" description="Install ivy" unless="ivy.installed">
<mkdir dir="${user.home}/.ant/lib"/>
<get dest="${user.home}/.ant/lib/ivy.jar" src="http://search.maven.org/remotecontent?filepath=org/apache/ivy/ivy/2.4.0/ivy-2.4.0.jar"/>
<fail message="Ivy has been installed. Run the build again"/>
</target>
<target name="clean" description="Cleanup build files">
<delete dir="${build.dir}"/>
</target>
<target name="clean-all" depends="clean" description="Additionally purge ivy cache">
<ivy:cleancache/>
</target>
</project>