我有一个构建文件,声明了如图所示的类路径
<path id="compile.classpath">
<fileset dir="${basedir}/lib" includes="**"/>
<fileset dir="${jboss.home}/lib" includes="**"/>
<pathelement path ="${build.classes.dir}"/>
</path>
我尝试查看文档,但我无法理解使用
pathelement
。
我知道ID在执行任务时用于引用此类路径,而fileset包含jar文件。
编辑1:
我怀疑为什么我们不能使用fileset
来包含类文件来代替pathelement
?
答案 0 :(得分:6)
最新编辑:
我的疑问是为什么我们不能使用fileset来包含类文件代替pathelement?
如果您使用文件集,那么您将在路径中添加一组类文件,如下所示:
CLASSPATH=classes/MyClass1.class:classes/MyClass2.class:classes/MyClass3.class:....
Java希望看到的只是:
CLASSPATH=classes
只有jar(以及WAR,EAR等)文件在类路径中明确列出(Java将打开它们并加载它们的类文件),因此需要在ANT中使用文件集。
以下是Oracle文档:
.jar,.zip或.class文件的类路径。每个类路径都应以文件名或目录结尾,具体取决于您将类路径设置为:
- 对于包含.class文件的.jar或.zip文件,类路径以.zip或.jar文件的名称结尾。
- 对于未命名包中的.class文件,类路径以包含.class文件的目录结束。
- 对于命名包中的.class文件,类路径以包含“root”包的目录(完整包名中的第一个包)结束。
答案 1 :(得分:2)
关于'pathelements'here已有类似的问题。从提供的文件: “如果它的路径结构与您的示例中类似:”类似路径的结构可以通过嵌套元素包含对另一个类路径结构(路径本身就是资源集合)的引用“
<path id="base.path">
<pathelement path="${classpath}"/>
<fileset dir="lib">
<include name="**/*.jar"/>
</fileset>
<pathelement location="classes"/>
</path>
如果是类路径结构: “path属性旨在与预定义路径一起使用”
<classpath>
<pathelement path="${classpath}"/>
<pathelement location="lib/helper.jar"/>
</classpath>