antlib和classpathref
我有以下build.xml文件:antlib和classpathref,ant,classpath,Ant,Classpath,我有以下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" >
<?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>
...
运行生成文件时,我得到:
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 libs一样
maven-ant-tasks.jar是否可以这样做?当您使用:
xmlns:artifact="antlib:org.apache.maven.artifact.ant"
如果没有typedef,则其libs必须位于ANTS类路径中。即ANT_HOME/lib
或${user.HOME}/.ANT/lib
或用-lib
指定的任何文件夹。这就是为什么ant-lib
有效的原因
如果像其他Antlib一样将其更改为typedef,它将正常工作
<typedef resource="org/apache/maven/artifact/ant/antlib.xml"
uri="antlib:org.apache.maven.artifact.ant"
classpathref="libs.folder" />
将maven-ant-tasks-2.x.x.jar和maven-ant-tasks-2.x.x.pom复制到/lib
注意:在上阅读更多内容是这样做修复了问题:嗨,我在ant的lib目录中有maven-ant-tasks-2.1.3.jar,但这似乎对我不起作用。你需要引用实际的jar。见此:
<typedef resource="org/apache/maven/artifact/ant/antlib.xml"
uri="antlib:org.apache.maven.artifact.ant"
classpathref="libs.folder" />