簡體   English   中英

ant任務從jar中刪除文件

[英]ant task to remove files from a jar

如何編寫一個從先前編譯的JAR中刪除文件的ant任務?

假設我的JAR文件為:

aaa/bbb/ccc/Class1
aaa/bbb/ccc/Class2
aaa/bbb/def/Class3
aaa/bbb/def/Class4

...並且我想要一個沒有aaa.bbb.def軟件包的JAR文件的版本,我需要使用ant剝離它,以便最終得到一個包含以下內容的JAR:

aaa/bbb/ccc/Class1
aaa/bbb/ccc/Class2

謝謝!

您是否嘗試過使用zipfileset任務?

<jar destfile="stripped.jar">
    <zipfileset src="full.jar" excludes="files/to/exclude/**/*.file"/>
</jar>

例如:

<property name="library.dir" value="dist"/>
<property name="library.file" value="YourJavaArchive.jar"/>
<property name="library.path" value="${library.dir}/${library.file}" />
<property name="library.path.new" value="${library.dir}/new-${library.file}"/>

<target name="purge-superfluous">
    <echo>Removing superfluous files from Java archive.</echo>

    <jar destfile="${library.path.new}">
        <zipfileset src="${library.path}" excludes="**/ComicSans.ttf"/>
    </jar>

    <delete file="${library.path}" />
    <move file="${library.path.new}" tofile="${library.path}" />
</target>

您必須解壓縮然后重新壓縮。

<unzip src="myjar.jar" dest="/classes/">
<jar destfile="newjar.jar"
    basedir="/classes/"
    includes="**/*"
    excludes="**/def/*"
/>    

我來到這里的目的是要使用ant作為解決辦法,以解決Gradle解壓縮中的一些不足。

碰巧的是,其他人在同一條船上。

這是一個例子:

    task antUnzip() << {

            ant.jar(destfile : "stripped.jar") {
                zipfileset (src : "full.jar", excludes : "files/to/exclude/**/*.file") {
                }
            }
}

如果具有jar文件功能的存檔程序(例如Linux上的“ zip”)可用,則可以通過以下方式完成此任務:

<exec executable="zip">            
<arg value="-d"/>            
<arg value="myJarCopyToStrip.jar"/>            
<arg value="aaa/bbb/def/*>            
<arg value="aaa/bbb/def>
</exec>

子樹刪除取決於所用存檔器的功能。
Ant“ exec”任務的“ os”屬性允許在不同的OS上使用不同的存檔器。

我不確定是否可以直接解決您的要求。 我建議將jar分解到一些temp目錄,然后刪除不需要的類文件。 最后,使用所需的類文件創建一個新的jar。

參考鏈接:

http://ant.apache.org/manual/Tasks/unzip.html

http://ant.apache.org/manual/Tasks/delete.html

http://ant.apache.org/manual/Tasks/jar.html

答案對我來說並不太好-

<zip destfile="tmp.jar">
        <zipfileset src="src.jar">
                <exclude name="**/*.class" />
        </zipfileset>
</zip>
<move file="tmp.jar" tofile="src.jar" /> 

這僅需一次通過,不會增加構建時間

來源: http : //ant.1045680.n5.nabble.com/Remove-entru-from-ZIP-file-using-ANT-td1353728.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM