gpt4 book ai didi

java - Ant/构建 JAR : Build failed, 未找到引用任务.路径

转载 作者:行者123 更新时间:2023-11-30 03:36:13 25 4
gpt4 key购买 nike

我正在开发一个使用 build.xml 生成 JAR 文件的项目。当我尝试构建它时,出现此错误:

Buildfile: D:\xxxxx\trunk\project-java\build.xml

BUILD FAILED D:\xxxxxtrunk\project-java\build.xml:25: Reference task.path not found.

Total time: 140 milliseconds

Build.xml 及其崩溃的行。

<?xml version="1.0"?>
<project name="xxxxx" default="prepare-release" basedir=".">

<property name="project.dir" value="."/>
<property file="${project.dir}/build.properties"/>
<property file="${project.dir}/svn.properties"/>

<property name="dist.dir" value="${project.dir}/dist"/>

<property name="build.dir" value="${project.dir}/build"/>
<property name="src.dir" value="${dist.dir}/${dist.type}/src"/>
<property name="release.dir" value="${project.dir}/release"/>



<!-- load svn tasks -->
// Pb on this line
<typedef resource="org/tigris/subversion/svnant/svnantlib.xml"
classpathref="task.path" />

它可能是什么?感谢您的帮助。

最佳答案

BUILD FAILED D:\xxxxxtrunk\project-java\build.xml:25: Reference task.path not found.

那么,类路径 task.path 在哪里?在您的 build.xml 中定义文件?

当您通过 <taskdef> 定义任务时,你需要做几件事:

  • 您需要指定任务所在的jar文件。
  • 您需要指定包含任务的类,以及如何在 jar 中找到它。这可以通过以下两种方式之一完成:
    • 你说类(class)在 com.foo.bar.mytask ,然后为其命名。
    • 您可以在 jar 中指定一个资源(属性文件或 XML 文件),它几乎说明了与每个名称关联的类(这就是 resource="org/tigris/subversion/svnant/svnantlib.xml" 正在做的事情。
  • 最后,您需要指定如何查找该 jar 文件。

你错过的最后一个。您指定了对名为 task.path类路径的引用,但实际上并没有定义该类路径。

您可以执行以下几项操作:

  • 您可以将 jar 放入 $ANT_HOME/lib目录。当您通过 <taskdef/> 定义任务时,Ant自动寻找那里。我不喜欢这个,因为这意味着您的构建无法在其他用户的计算机上运行,​​因为他们可能没有安装该 jar。

  • 您可以定义一个类路径来查找它。

这是我的偏好,这就是我通常的做法。

<taskdef resource="org/tigris/subversion/svnant/svnantlib.xml">
<classpath>
<fileset dir="${basedir}/antlib/svnant}"/>
</classpath>
</taskpath>

在您的项目中,创建一个名为 ${basedir}/antlib/svnant 的目录并将此 SVNAnt 任务附带的所有五个 jar 放入该目录中。这样,您的可选构建任务所需的所有 jar 现在都位于您的项目中。如果有人从版本控制系统检查您的项目,他们会自动获取所需的任务 jar。

我将所有可选的 ant 任务 jar 放入 ${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>

它只是任务名称到 jar 内的类的映射。

关于java - Ant/构建 JAR : Build failed, 未找到引用任务.路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27841832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com