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

时间:2013-12-06 11:03:24

标签: ant

JAR的Class-Path写在JAR的Manifest文件中。以下Bash代码从JAR读取Class-Path,如果它没有超过72 char限制:

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

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

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

1 个答案:

答案 0 :(得分:2)

您可能需要尝试以下方法,将短类路径放在属性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之前放置了以下内容,那么它也应该适用于更长的Class-Path值(首先加入分割线):

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