我是Ant的新手(我来自Maven),我必须执行一个在我公司的应用程序中使用的旧Ant脚本的重构。
我有一些问题需要了解Ant代码的确切内容:
<pathconvert property="jar.classpath" pathsep=" ">
<path refid="project.classpath" />
<chainedmapper>
<flattenmapper />
<globmapper from="*" to="lib/*" />
</chainedmapper>
</pathconvert>
这些行分为名为 jar 的目标,用于创建应用程序的 jar 。
阅读官方Ant文档,我发现这是一个Ant任务:
将嵌套的ResourceCollections或一个引用转换为 特定平台的路径表单,可选地存储结果 进入一个给定的财产。它也可以在你需要转换时使用 资源集合成一个列表,由给定的字符分隔,如此 作为逗号或空格,或相反地,例如转换文件列表 在FileList中进入路径。
这对我来说并不清楚...阅读 ResourceCollections 的文档是一组资源
这个脚本部分究竟是什么?什么是 project.classpath ? (我无法在我的属性文件中找到它)
TNX
安德烈
答案 0 :(得分:2)
这段脚本定义了属性jar.classpath
jar.classpath
的值计算如下:
project.classpath
资源开始(project.classpath可能是一个类路径容器。这意味着它包含一组指向某些jar或目录的路径元素)chainedmapper
适用于project.classpath
chainedmapper
是一个2步映射器:第1步:flattenmapper:从path元素中删除所有目录信息。因此,表示此文件dir1/dir2/lib1.jar
的路径元素将转换为lib1.jar
第2步:globmapper:将使用lib/
为step1产生的每个路径元素添加前缀。因此lib1.jar
将成为lib/lib1.jar
正如我所说:此转换的结果存储在jar.classpath
这段脚本不会移动或复制任何文件。它只是一个类路径容器转换。您可能有一些其他目标将所有必需的lib放在目录lib/
中,以便在使用jar.classpath
时(可能在javac任务中)它将指向现有的jar文件。
备注project.classpath
:它可能是由构建文件中某处的<path id="project.classpath">...</path>
定义的。即,它不是您在属性文件中找到的属性。