gpt4 book ai didi

java - 关于使用pathconvert Ant 任务的一些疑问。它做什么?

转载 作者:行者123 更新时间:2023-11-30 04:12:09 26 4
gpt4 key购买 nike

我对 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 任务:

Converts nested ResourceCollections, or a reference to just one, into a path form for a particular platform, optionally storing the result into a given property. It can also be used when you need to convert a Resource Collection into a list, separated by a given character, such as a comma or space, or, conversely, e.g. to convert a list of files in a FileList into a path.

这对我来说不清楚......阅读ResourceCollections的文档是一组资源集

这个脚本部分到底做什么?什么是project.classpath? (我在我的属性文件中找不到它)

Tnx

安德里亚

最佳答案

这段脚本正在定义属性 jar.classpath

jar.classpath的值计算如下:

  • 它从 project.classpath 开始资源(project.classpath可能是一个类路径容器。这意味着它包含一组指向某些jar或目录的路径元素)
  • 一个chainedmapper应用于project.classpath
  • 在您的示例代码中 chainedmapper是一个 2 步骤映射器:

第1步:flattenmapper:从路径元素中删除所有目录信息。所以表示该文件的路径元素 dir1/dir2/lib1.jar转换为lib1.jar

第 2 步:globmapper :将为第 1 步生成的每个路径元素添加前缀 lib/ 。所以lib1.jar将变成lib/lib1.jar

正如我所说:此转换的结果存储在 jar.classpath

这段脚本不会移动或复制任何文件。它只是一个类路径容器转换。您可能有一些其他目标,将所有必需的库放入目录 lib/ 中这样当 jar.classpath将被使用(可能在 javac 任务中)它将指向现有的 jar 文件。

备注project.classpath :它可能由 <path id="project.classpath">...</path> 定义在你的构建文件中的某个地方。即它不是您在属性文件中找到的属性。

关于java - 关于使用pathconvert Ant 任务的一些疑问。它做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19359029/

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