我有以下build.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<project name="Minimal" default="default" basedir="." xmlns:artifact="antlib:org.apache.maven.artifact.ant">
<path id= "libs.folder" >
<fileset dir= "lib" >
<include name= "*.jar" />
</fileset>
</path>
<typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="libs.folder" />
<taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" classpathref="libs.folder"/>
<artifact:pom id="pom.file" file="pom.xml" />
<property name="pom.version" value="${pom.file.version}"/>
<groovy src="test.groovy">
<arg line="3"/>
</groovy>
...
位于以下结构中:
my-project
-> lib
-> maven-ant-tasks.jar
-> svnant.jar
-> groovy-all.jar
-> svnClientAdapter.jar
-> build.xml
-> pom.xml
-> test.groovy
当我运行构建文件时,我得到:
BUILD FAILED
....\build.xml:18: Problem: failed to create task or type antlib:org.apache.maven.artifact.ant:pom
Cause: The name is undefined.
Action: Check the spelling.
如果我跑:
ant -lib lib
它可以工作但是将所有内容保存在build.xml文件中可能会很好 - 就像使用groovy和svnant库一样。
这可能是以某种方式使用maven-ant-tasks.jar吗?
答案 0 :(得分:5)
将maven-ant-tasks-2.x.x.jar和maven-ant-tasks-2.x.x.pom复制到/ lib。
http://search.maven.org/#search|ga|1|a%3A%22maven-ant-tasks%22
的更多内容答案 1 :(得分:3)
使用时:
xmlns:artifact="antlib:org.apache.maven.artifact.ant"
没有typedef,其libs必须在ANTS CLasspath中。这是ANT_HOME/lib
或${user.home}/.ant/lib
或使用-lib
指定的任何文件夹。这就是为什么ant -lib lib
有效。
如果将其更改为类似其他antlibs的typedef,它将起作用。
<typedef resource="org/apache/maven/artifact/ant/antlib.xml"
uri="antlib:org.apache.maven.artifact.ant"
classpathref="libs.folder" />