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

标签 java ant

我对 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/

相关文章:

java - 我正在尝试将 Wolfram Alpha API 用于 Java 中的应用程序,但 Async 类出现问题

java - SQL 不适用于结果集

java - 又一个 Ant/junit ClassNotFoundException

ant - 使用 Gradle anttask 生成 JAXB Episode 文件

java - 游戏小程序未在2D游戏中运行(while循环)

java - 有没有适用于 Android 的 GUI 工具?

Java Spring 项目结构 - 未检测到 Controller

java - 如何在 Java 项目中自动添加导入?

java - 无法使用ant构建java项目

java - 将退出代码从 ant 返回到批处理文件