Antlib и Classpathref
У меня есть следующий файл 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 как-то?
2 ответа
Скопируйте maven-ant-tasks-2.xxjar и maven-ant-tasks-2.xxpom в / lib.
http://search.maven.org/#search|ga|1|a%3A%22maven-ant-tasks%22
Примечание. Подробнее читайте на сайте http://maven.apache.org/ant-tasks/
Когда вы используете:
xmlns:artifact="antlib:org.apache.maven.artifact.ant"
без typedef библиотеки для этого должны быть в ANTS CLasspath. То есть ANT_HOME/lib
или же ${user.home}/.ant/lib
или любую папку, указанную с -lib
, Вот почему ant -lib lib
работает.
Если вы измените его на typedef, как и другие antlibs, он будет работать.
<typedef resource="org/apache/maven/artifact/ant/antlib.xml"
uri="antlib:org.apache.maven.artifact.ant"
classpathref="libs.folder" />