BUILD FAILED D:\xxxxxtrunk\project-java\build.xml:25: Reference task.path not found.
Ну, где же путь к классам task.path
определены в файле build.xml
?
При определении задачи с помощью <taskdef>
, вам нужно сделать несколько вещей:
- Вам необходимо указать файл фляги, где задача существует.
- Вам нужно указать класс, содержащий задание, и как его найти в банке. Это можно сделать одним из двух способов:
- Вы говорите, что класс находится в
com.foo.bar.mytask
, а затем дайте ему имя.
- Вы можете указать ресурс в банке (либо файл свойств или файл XML), который в значительной степени говорит, что класс связан с каждым именем (что
resource="org/tigris/subversion/svnant/svnantlib.xml"
делает.
- Наконец, вам нужно чтобы определить, как найти этот файл JAR.
Это последний один вы пропали без вести. указана ссылка на называются классам task.path
, но на самом деле не определить, что путь к классам.
Есть несколько вещей, которые вы можете сделать:
Вы можете поместить банку в каталог $ANT_HOME/lib
. Когда вы определяете задачу через <taskdef/>
, Ant автоматически смотрит туда. Я не люблю этого, потому что это означает, что вы создаете, не работает на компьютерах других пользователей, потому что у них может не быть установленной этой банки.
Вы можете определить путь к class, чтобы найти его.
Это мое предпочтение, и вот как я обычно это делаю.
<taskdef resource="org/tigris/subversion/svnant/svnantlib.xml">
<classpath>
<fileset dir="${basedir}/antlib/svnant}"/>
</classpath>
</taskpath>
В вашем проекте, создать каталог с именем ${basedir}/antlib/svnant
и поставить все пять банок, которые пришли с этой SVNAnt задачей в этой директории. Таким образом, все банки, необходимые для ваших дополнительных задач сборки, теперь находятся внутри вашего проекта. Если кто-то проверяет ваш проект из системы управления версиями, они автоматически получают необходимые банки задач.
Я поместил все мои дополнительные муравьиные задачи в каталог ${basedir}/antlib
и поместил их в свой каталог в этом каталоге.
Помните, что я сказал, что одна из вещей, которые вам нужны, - это указать класс, содержащий задание ?. Вот что это org/tigris/subversion/svnant/svnantlib.xml
файл, указанный выглядит в svnant.jar
:
<?xml version="1.0"?>
<antlib>
<!-- Tasks -->
<taskdef name="svn"
classname="org.tigris.subversion.svnant.SvnTask" />
<!-- Types -->
<typedef name="svnFileSet"
classname="org.tigris.subversion.svnant.types.SvnFileSet" />
<!-- Selectors -->
<typedef name="svnNormal"
classname="org.tigris.subversion.svnant.selectors.Normal" />
<typedef name="svnAdded"
classname="org.tigris.subversion.svnant.selectors.Added" />
<typedef name="svnReplaced"
classname="org.tigris.subversion.svnant.selectors.Replaced" />
<typedef name="svnModified"
classname="org.tigris.subversion.svnant.selectors.Modified" />
<typedef name="svnConflicted"
classname="org.tigris.subversion.svnant.selectors.Conflicted" />
<typedef name="svnIgnored"
classname="org.tigris.subversion.svnant.selectors.Ignored" />
<typedef name="svnUnversioned"
classname="org.tigris.subversion.svnant.selectors.Unversioned" />
<typedef name="svnLocked"
classname="org.tigris.subversion.svnant.selectors.Locked" />
<typedef name="svnMissing"
classname="org.tigris.subversion.svnant.selectors.Missing" />
<typedef name="svnDeleted"
classname="org.tigris.subversion.svnant.selectors.Deleted" />
<!-- Conditions -->
<typedef name="svnExists"
classname="org.tigris.subversion.svnant.conditions.Exists" />
</antlib>
Это просто карта названия задач для классов внутри кувшина.
Понял, '<путь ID = "task.path">' был объявлен позже в build.xml. Сейчас все в порядке. Благодаря! – Someday