gpt4 book ai didi

ant - 如何使用 Apache Ant 提取文件名的一部分?

转载 作者:行者123 更新时间:2023-12-04 14:21:16 24 4
gpt4 key购买 nike

我想从我的 Ant 脚本之外生成的文件名中提取版本号。

一个外部构建工具(PDE 构建)在一个众所周知的目录中创建一个 artifactid-1.2.3.201101010101.jar 形式的文件,但我无法事先告知版本信息。我需要将该文件名中的版本部分(1.2.3.201101010101)提取到 Ant 属性中以进行进一步处理,例如变量替换。

使用 ant-contrib 是可以接受的,但是我还没有找到提取此信息的方法。

最佳答案

这是使用 ant-contrib PropertyRegex 的解决方案任务。

  • 将文件名放入路径中。
  • 将路径转换为属性。
  • PropertyRegex 属性 (ant-contrib)。

您可以通过将属性值写入临时文件,然后使用带有过滤器链的 loadfile 从中提取工件 ID 来避免 ant-contrib。见 this answer例如。

  <project default="get-revision-number">
<taskdef resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
<pathelement location="c:/lib/ant-contrib/ant-contrib-1.0b3.jar"/>
</classpath>
</taskdef>

<target name="get-revision-number">
<path id="artifact.id.path">
<fileset dir=".">
<include name="artifactid-*.jar"/>
</fileset>
</path>
<property name="artifact.id.file" refid="artifact.id.path"/>
<echo message="artifact.id.file: ${artifact.id.file}"/>
<propertyregex property="artifact.id" input="${artifact.id.file}" regexp=".*artifactid-(.*).jar" select="\1" />
<echo message="artifact.id: ${artifact.id}"/>
</target>
</project>

输出

$ ant
Buildfile: C:\tmp\build.xml

get-revision-number:
[echo] artifact.id.file: C:\tmp\artifactid-1.2.3.201101010101.jar
[echo] artifact.id: 1.2.3.201101010101

BUILD SUCCESSFUL
Total time: 0 seconds

关于ant - 如何使用 Apache Ant 提取文件名的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7725033/

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