はじめに
去年、好きに作って良いと言われたので、いつもどおりMavenプロジェクト作ってMavenビルドしていた仕事で、
客先に引き渡す前のリーダーチェックで、
「Mavenとかよく判らんし、インターネットからよく判らない手続きで依存ファイルを落とされるの嫌だ。
リテラシー低い人間に合わせてくれ。」
と、言われたので、イラっとしながらAntビルドできるようにしたときのTIPSです。
ソース
最新のものは、Gistに乗っけてます。
https://gist.github.com/sh-ogawa/d74fd3b7d47169a1f2f64a6bcf6c6f45
build.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="!!input-project-name!!" default="build" basedir=".">
<property file="build.properties" />
<path id="class.path">
<fileset dir="${libDir}">
<include name="**/*.jar" />
</fileset>
</path>
<target name="build" depends="clean,compile,jar" />
<target name="clean">
<delete dir="${destDir}" />
<mkdir dir="${destDir}"/>
<mkdir dir="${destDir}/classes"/>
</target>
<target name="compile"
description="ソースコードのコンパイルをします">
<javac
srcdir="${srcDir}"
destdir="${destDir}/classes"
deprecation="${javac.deprecation}"
debug="${javac.debug}"
optimize="${javac.optimize}"
encoding="${javac.encoding}"
source="${javac.source}"
target="${javac.target}"
classpathref="class.path"
includeantruntime="false" />
<copy
todir="${destDir}/classes"
preservelastmodified="yes" >
<fileset dir="${resourceDir}">
<include name="**/*" />
</fileset>
</copy>
</target>
<target name="jar">
<jar jarfile="${destDir}/${ant.project.name}.jar">
<zipgroupfileset dir="${libDir}" includes="*.jar" />
<manifest>
<attribute name="Main-Class" value="tools.main.Main" />
</manifest>
<fileset dir="${destDir}/classes">
</fileset>
</jar>
</target>
</project>
build.properties
##
# dir setting (build.xml の basedir からの相対指定)
##
srcDir=./src/main/java
resourceDir=./src/main/resources
destDir=./ant/bin/
libDir=./ant/lib/
##
# javac setting
##
javac.debug=on
javac.deprecation=on
javac.optimize=off
javac.encoding=UTF-8
javac.target=8
javac.source=8
準備
- build.propertiesはプロジェクトに応じて書き換えてください
- jarを作る限りはbuild.xmlは原則、修正する必要はないです
※WEBアプリをビルドする場合は要修正
使い方
- maven-dependency-pluginを使って依存しているJARファイルを以下にコピーする
/project-root/ant/lib
コマンド書くとこんな感じ
mvn dependency:copy-dependencies -DoutputDirectory=ant/lib
- antビルドする
ant -f build.xml
そうすると、以下にパッケージングしたjarファイルができる
/project-root/ant/bin
最後に
Mavenなど、依存関係を自動解決してくれるツールを使えない人は、build.xmlも書けない人が多いので、
いい加減Antビルドするプロジェクトは無くなって欲しいです。
※前職での話です。