私は次のようにそれを達成しようとしました:ステートメントをサポートするため、AntContribタスクをインストールしましたif
。OSプラットフォームとアーキテクチャの検出に使用するようにビルドファイルを変更しました。
コンパイル時には、私の4つのSWT Jarがすべて使用されますlib.dir
が、コンパイル後は、必要なSWTJarのみがビルドディレクトリにコピーされます。これにより、4つすべてのJARを保持するよりも、最終的なZIPのサイズをはるかに小さく保つことができると思います。
<target name="copy" depends="compile">
<if>
<os family="windows"/>
<then>
<exec dir="." executable="cmd" outputproperty="command.ouput">
<arg line="/c SET ProgramFiles(x86)"/>
</exec>
<if>
<contains string="${command.ouput}" substring="Program Files (x86)"/>
<then>
<copy file="${lib.dir}/swt-win32-x86_64.jar" tofile="${jar.dir}/SWT.jar"/>
</then>
<else>
<copy file="${lib.dir}/swt-win32-x86_32.jar" tofile="${jar.dir}/SWT.jar"/>
</else>
</if>
</then>
<elseif>
<os family="unix"/>
<then>
<exec dir="." executable="/bin/sh" outputproperty="command.ouput">
<arg line="/c uname -m"/>
</exec>
<if>
<contains string="${command.ouput}" substring="_64"/>
<then>
<copy file="${lib.dir}/swt-macosx-x86_64.jar" tofile="${jar.dir}/SWT.jar"/>
</then>
<else>
<copy file="${lib.dir}/swt-macosx-x86_32.jar" tofile="${jar.dir}/SWT.jar"/>
</else>
</if>
</then>
</elseif>
</if>
</target>
これは今のところうまくいくようです。もう少しテストしてコメントを追加します。