ant - 如何从 Ant 中的 JAR 中读取类路径?

标签 ant

JAR 的类路径写入 JAR 的 Manifest 文件中。以下 Bash 代码从 JAR 中读取类路径(如果它不超过 72 个字符的限制):

unzip -c "$1" META-INF/MANIFEST.MF |
sed -n 's/^Class-Path: \(.\+\)$/\1/p' |
tr -d '\r'

现在我正在 Ant 中使用 exec 调用代码,但我想删除所有 exec

如何在不使用 unzipsedtr 的情况下在 Ant 中执行相同操作?

最佳答案

您可能需要尝试添加以下内容(在定义属性的 build.xml 文件的开头),将短类路径放入属性 classpath 中:

<loadresource property="classpath">
    <zipentry zipfile="demo.jar" name="META-INF/MANIFEST.MF"/>
    <filterchain>
        <tokenfilter>
            <containsregex pattern="^Class-Path: (.+)$" flags="i"/>
            <replaceregex pattern="^Class-Path: (.+)$" replace="\1" flags="i"/>
        </tokenfilter>
        <tokenfilter><!-- get rid of trailing line separator -->
            <filetokenizer/>
            <replaceregex pattern="(\r?\n)+" replace="" flags="m"/>
        </tokenfilter>
    </filterchain>
</loadresource>

编辑:如果将以下内容放在上面的标记过滤器之前,那么它也应该适用于较长的类路径值(通过首先加入分割线):

<tokenfilter>
    <filetokenizer/>
    <replaceregex pattern="\r?\n (.+)$" replace="\1" flags="m"/>
</tokenfilter>

关于ant - 如何从 Ant 中的 JAR 中读取类路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20422275/

相关文章:

ant - 找不到 ${env.JAVA_HOME} - Ant

java - ANT 可以在远程服务器上启动重启作业吗?

java - java 1.7 中的 xmltask?

ant ${java.home} 指向 $JAVA_HOME/jre,而不是 $JAVA_HOME

python - 如何在python脚本中调用ant任务?

java - 启动现代编译器时出错

java - 预编译jsp文件发生异常

java - 有什么方法可以下载旧版本的 appcompat 库吗?

scala - Scala的Ant FSC任务速度

java - 在 Ant 中,<sourcepath> 和 <src> 元素有什么区别?