以前にコンパイルされた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>
Jarファイルを解除してrejarする必要があります。
<unzip src="myjar.jar" dest="/classes/">
<jar destfile="newjar.jar"
basedir="/classes/"
includes="**/*"
excludes="**/def/*"
/>
私はここで、gradle unzipのいくつかの短所を回避するためにantを使用するためにここに来ました。
オフのチャンスでは、誰かが同じボートに乗っています。
次に例を示します。
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で異なるアーカイバーを使用できます。
答えは私にとってはまったく意味がありませんでした-
<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
あなたの要件に対する直接的な解決策があるかどうかはわかりません。 jarを一時ディレクトリに展開してから、不要なクラスファイルを削除することをお勧めします。最後に、必要なクラスファイルを含む新しいjarを作成します。
参照リンク:
http://ant.Apache.org/manual/Tasks/unzip.html