Java 使用fileset和pathelement在build.xml中设置类路径的区别
我有一个声明类路径的构建文件,如图所示Java 使用fileset和pathelement在build.xml中设置类路径的区别,java,ant,classpath,build.xml,Java,Ant,Classpath,Build.xml,我有一个声明类路径的构建文件,如图所示 <path id="compile.classpath"> <fileset dir="${basedir}/lib" includes="**"/> <fileset dir="${jboss.home}/lib" includes="**"/> <pathelement path ="${build.classes.dir}"/> </p
<path id="compile.classpath">
<fileset dir="${basedir}/lib" includes="**"/>
<fileset dir="${jboss.home}/lib" includes="**"/>
<pathelement path ="${build.classes.dir}"/>
</path>
我试图查看文档,但无法理解的用法
pathelement
我知道在执行任务时,ID用于引用这个类路径,而文件集包含JAR文件
编辑1:
我的疑问是为什么我们不能使用
文件集
来包含类文件来代替路径元素
?关于“路径元素”已经有了类似的问题。根据提供的文件:
“如果它是示例中的路径结构:“类似路径的结构可以通过嵌套元素包含对另一个类似路径的结构(路径本身就是资源集合)的引用”
如果是类路径结构:
“路径属性用于预定义的路径”
最新编辑:
我的疑问是为什么我们不能使用文件集来包含类文件来代替pathelement
如果使用文件集,则将向路径添加一组类文件,如下所示:
CLASSPATH=classes/MyClass1.class:classes/MyClass2.class:classes/MyClass3.class:....
当Java希望看到的只是:
CLASSPATH=classes
类路径上只显式列出jar(以及WAR、EAR等)文件(Java将打开它们并加载它们的类文件),因此在ANT中需要一个文件集
更新
以下是Oracle文档:
- 对于包含.class文件的.jar或.zip文件,类路径以.zip或.jar文件名结尾
- 对于未命名包中的.class文件,类路径以包含.class文件的目录结尾
- 对于命名包中的.class文件,类路径以包含“root”包(完整包名中的第一个包)的目录结尾
ANT手册:该手册没有在Depthagred中解释pathelement。文档假设读者理解Java类路径和类加载器。它也没有正确解释“path”标记与“classpath”的关系“。它们基本上是一样的,但doco对于初学者来说相当糟糕。是的,在理解这些pathelement时有点不确定。而且文档中没有涉及到这一点。但是您是否尝试过搜索文件集和路径之间的差异?例如,还有另一个问题:我看了链接和许多其他问题,人们似乎总是使用pathelement作为类文件。我同意,所以在我的示例中,为什么我不能替换为您?我没有理解我的观点。。。。使用文件集将每个类文件添加到类路径。。。Java并不希望这样填充类路径。对于类文件,它只需要根目录
CLASSPATH=classes/MyClass1.class:classes/MyClass2.class:classes/MyClass3.class:....
CLASSPATH=classes