Ant – ファットjarファイルを作成する
このチュートリアルでは、Antビルドスクリプトを使用して遠く/遠いJarファイルを作成する方法を説明します。これはプロジェクト全体の外部依存関係を単一のjarファイルに含めることを意味します。
使用される技術:
-
アリ1.9.4
-
Ant-Ivy 2.4
-
ログバック1.1.2
-
joda-time 2.5
1.ファット・ジャーを作成する
以前のリンク://ant/ant-how-to-create-a-jar-file-with-external-libraries/[Ant外部ライブラリ]Javaプロジェクトは再利用されます。 fat jarを作成するには、 “Jar”タスクと `zipfileset`関数を使用します。
build.xml
<!-- Group all dependencies into a big dependency-all.jar --> <target name="copy-dependencies"> <mkdir dir="${dist.lib.dir}"/> <jar jarfile="${dist.lib.dir}/dependencies-all.jar"> <zipgroupfileset dir="${lib.dir}"> <include name="** ** /** .jar"/> </zipgroupfileset> </jar> </target> <!-- jar it, extract above dependency-all.jar and zip it with project files --> <target name="jar" depends="compile, copy-dependencies" description="package, output to JAR"> <mkdir dir="${dist.dir}"/> <mkdir dir="${dist.lib.dir}"/> <jar jarfile="${dist.dir}/${projectName}.jar" basedir="${build.dir}"> <manifest> <attribute name="Main-Class" value="${main-class}"/> </manifest> <zipfileset src="${dist.lib.dir}/dependencies-all.jar" excludes="META-INF/** .SF"/> </jar> </target>
2. build.xml
完全な `build.xml`の例を見直してください。
build.xml
<project xmlns:ivy="antlib:org.apache.ivy.ant" name="dateUtilsProject" default="main" basedir="."> <description> Create a Java Project (JAR) with Ant build script </description> <property name="projectName" value="DateUtils"/> <property name="src.dir" location="src"/> <property name="build.dir" location="bin"/> <property name="dist.dir" location="dist"/> <property name="dist.lib.dir" location="dist/lib"/> <property name="lib.dir" value="lib"/> <property name="main-class" value="com.mkyong.core.utils.DateUtils"/> <!-- ivy start --> <!-- ivy to get dependencies and copy to project lib folder automatically --> <target name="resolve" description="retrieve dependencies with ivy"> <ivy:retrieve/> </target> <!-- install ivy --> <target name="ivy" description="Install ivy"> <mkdir dir="${user.home}/.ant/lib"/> <get dest="${user.home}/.ant/lib/ivy.jar" src="https://search.maven.org/remotecontent?filepath=org/apache/ivy/ivy/2.4.0-rc1/ivy-2.4.0-rc1.jar"/> </target> <!-- ivy end --> <target name="init"> <mkdir dir="${build.dir}"/> </target> <path id="classpath"> <fileset dir="${basedir}/"> <include name="${lib.dir}/** .jar"/> </fileset> </path> <!-- Need classpath to run this --> <target name="compile" depends="init" description="compile the source "> <javac includeantruntime="false" srcdir="${src.dir}" destdir="${build.dir}" classpathref="classpath"/> </target> <!-- Group all dependencies into a big dependency-all.jar --> <target name="copy-dependencies"> <mkdir dir="${dist.lib.dir}"/> <jar jarfile="${dist.lib.dir}/dependencies-all.jar"> <zipgroupfileset dir="${lib.dir}"> <include name="** ** /** .jar"/> </zipgroupfileset> </jar> </target> <!-- jar it, extract above dependency-all.jar and zip it with project files --> <target name="jar" depends="compile, copy-dependencies" description="package, output to JAR"> <mkdir dir="${dist.dir}"/> <mkdir dir="${dist.lib.dir}"/> <jar jarfile="${dist.dir}/${projectName}.jar" basedir="${build.dir}"> <manifest> <attribute name="Main-Class" value="${main-class}"/> </manifest> <zipfileset src="${dist.lib.dir}/dependencies-all.jar" excludes="META-INF/** .SF"/> </jar> </target> <target name="clean" description="clean up"> <delete dir="${build.dir}"/> <delete dir="${dist.dir}"/> </target> <!-- Default, run this --> <target name="main" depends="clean, compile, jar"/> </project>
3.実行とテスト
3.1 Ivyをインストールします。インストールした場合は、これをスキップします。
$ ant ivy
3.2プロジェクトの依存関係をダウンロードするようにIvyに依頼してください。
$ ant resolve
3.3。最後のファットジャーをきれいにし、コンパイルして作成します。
$ ant Buildfile:/Users/mkyong/Documents/workspace/AntDateUtils/build.xml clean: init: [mkdir]Created dir:/Users/mkyong/Documents/workspace/AntDateUtils/bin compile: [javac]Compiling 1 source file to/Users/mkyong/Documents/workspace/AntDateUtils/bin copy-dependencies: [mkdir]Created dir:/Users/mkyong/Documents/workspace/AntDateUtils/dist/lib [jar]Building jar:/Users/mkyong/Documents/workspace/AntDateUtils/dist/lib/dependencies-all.jar jar: [jar]Building jar:/Users/mkyong/Documents/workspace/AntDateUtils/dist/DateUtils.jar main: BUILD SUCCESSFUL Total time: 9 seconds
3.4実行する
$ java -jar dist/DateUtils.jar 12:11:23.732[main]DEBUG com.mkyong.core.utils.DateUtils -[MAIN]Current Date : 2014-12-24 2014-12-24
ソースコードをダウンロードする
ダウンロードする – リンク://wp-content/uploads/2014/12/AntDateUtils-fat-jar.zip[AntDateUtils-fat-jar.zip](8 KB)
参考文献
zipfileset]。リンク://ant/ant-how-to-create-a-java-project/[Ant – を作成する方法
Javaプロジェクト]。 link://ant/ant-how-to-create-jar-file-with-external-libraries/[Ant-
外部ライブラリを使用したJarファイルを作成する方法]