18
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Apache AntでJavaをビルドする

Posted at

はじめに

Apache Antを使用して、Javaをビルドする方法を記述します。

環境

  • CentOS 6.5
  • jdk 1.7.0_55
  • Apaache Ant 1.9.4
  • commons-lang 3.3.2

Javaの設定

  • jdkのインストール
$ curl -LO -b "oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/7u55-b13/jdk-7u55-linux-x64.rpm"
$ sudo yum localinstall jdk-7u55-linux-x64.rpm
$ java -version
java version "1.7.0_55"
Java(TM) SE Runtime Environment (build 1.7.0_55-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.55-b03, mixed mode)
  • 環境変数「JAVA_HOME」及び「PATH」の設定
~/.bash_profile
export JAVA_HOME=/usr/java/jdk1.7.0_55/bin/java
export PATH=$JAVA_HOME/bin:$PATH
  • alternativesの設定
$ sudo alternatives                                                              \
  --install /usr/bin/java java /usr/java/jdk1.7.0_55/bin/java 1700               \
  --slave /usr/bin/keytool keytool /usr/java/jdk1.7.0_55/bin/keytool             \
  --slave /usr/bin/orbd orbd /usr/java/jdk1.7.0_55/bin/orbd                      \
  --slave /usr/bin/pack200 pack200 /usr/java/jdk1.7.0_55/bin/pack200             \
  --slave /usr/bin/keytool keytool /usr/java/jdk1.7.0_55/bin/keytool             \
  --slave /usr/bin/policytool policytool /usr/java/jdk1.7.0_55/bin/policytool    \
  --slave /usr/bin/rmid rmid /usr/java/jdk1.7.0_55/bin/rmid                      \
  --slave /usr/bin/rmiregistry rmiregistry /usr/java/jdk1.7.0_55/bin/rmiregistry \
  --slave /usr/bin/servertool servertool /usr/java/jdk1.7.0_55/bin/servertool    \
  --slave /usr/bin/tnameserv tnameserv /usr/java/jdk1.7.0_55/bin/tnameserv       \
  --slave /usr/bin/unpack200 unpack200 /usr/java/jdk1.7.0_55/bin/unpack200

$ sudo alternatives --set java /usr/java/jdk1.7.0_55/bin/java
$ sudo alternatives --display java
java - status is manual.
 link currently points to /usr/java/jdk1.7.0_55/bin/java
/usr/java/jdk1.7.0_55/bin/java - priority 1700
 slave keytool: /usr/java/jdk1.7.0_55/bin/keytool
 slave orbd: /usr/java/jdk1.7.0_55/bin/orbd
 slave pack200: /usr/java/jdk1.7.0_55/bin/pack200
 slave keytool: /usr/java/jdk1.7.0_55/bin/keytool
 slave policytool: /usr/java/jdk1.7.0_55/bin/policytool
 slave rmid: /usr/java/jdk1.7.0_55/bin/rmid
 slave rmiregistry: /usr/java/jdk1.7.0_55/bin/rmiregistry
 slave servertool: /usr/java/jdk1.7.0_55/bin/servertool
 slave tnameserv: /usr/java/jdk1.7.0_55/bin/tnameserv
 slave unpack200: /usr/java/jdk1.7.0_55/bin/unpack200
Current `best' version is /usr/java/jdk1.7.0_55/bin/java.

Apache Antのインストール

$ curl -LO http://ftp.yz.yamagata-u.ac.jp/pub/network/apache//ant/binaries/apache-ant-1.9.4-bin.tar.gz
$ tar zxvf apache-ant-1.9.4-bin.tar.gz
  • antを環境変数「PATH」へ登録します。
~/.bash_profile
ANT_HOME=/path/to/ant
export PATH=$PATH:$ANT_HOME/bin

再ログイン後、設定を確認します。

$ ant -version
Apache Ant(TM) version 1.9.4 compiled on April 29 2014

Javaのビルド

  • Javaのプロジェクトを作成します。
$ mkdir -p projects/sample/src/main/java
$ mkdir -p projects/sample/src/test/java
$ cd projects/sample
  • HelloWrold.javaを実装します。
sample/src/main/java/HelloWorld.java
public class HelloWorld {

  public static void main(String[] args) {
    System.out.println("Hello, World!");
  }
}
  • antの設定ファイル build.xmlを作成します。
sample/build.xml
<?xml version="1.0" encoding="UTF-8" ?>
<project name="sample" basedir="." default="package">

  <property name="project" value="sample" />
  <property name="version" value="0.0.1" />
  <property name="src.dir" location="src/main/java" />
  <property name="build.dir" location="target/classes" />

  <target name="echo">
    <echo message="Hello, World!" />
  </target>

  <target name="package" depends="compile">
    <jar destfile="${project}-${version}.jar" basedir="${build.dir}" />
  </target>

  <target name="compile" depends="clean">
    <mkdir dir="${build.dir}" />
    <javac includeAntRuntime="false"
      srcdir="${src.dir}"
      destdir="${build.dir}"
    />
  </target>

  <target name="clean">
    <delete dir="${build.dir}" />
    <delete file="${project}-${version}.jar" />
  </target>

</project>
  • HelloWorld.javaをコンパイルします。
$ ant compile
Buildfile: /path/to/projects/sample/build.xml

clean:
   [delete] Deleting directory /path/to/projects/sample/target/classes
   [delete] Deleting: /path/to/projects/sample/sample-0.0.1.jar

compile:
    [mkdir] Created dir: /path/to/projects/sample/target/classes
    [javac] Compiling 1 source file to /path/to/projects/sample/target/classes

BUILD SUCCESSFUL
Total time: 1 second
  • HelloWorldを実行します。
$ java -cp target/classes HelloWorld
Hello, World!
  • ライブラリ(commons-lang)を追加します。
$ curl -LO http://ftp.jaist.ac.jp/pub/apache//commons/lang/binaries/commons-lang3-3.3.2-bin.tar.gz
$ tar zxvf commons-lang3-3.3.2-bin.tar.gz
$ cp commons-lang3-3.3.2/commons-lang3-3.3.2.jar /path/to/lib
  • HelloWorldを修正します。
sample/src/main/java/HelloWorld.java
import org.apache.commons.lang3.SystemUtils;

public class HelloWorld {

  public static void main(String[] args) {
    System.out.println("Hello, World!");
    System.out.println("* Java version : " + SystemUtils.JAVA_VM_VERSION);
    System.out.println("* OS name :" + SystemUtils.OS_NAME);
    System.out.println("* OS version :" + SystemUtils.OS_VERSION);
  }
}
  • build.xmlへライブラリの記述を追加します。
sample/build.xml
<?xml version="1.0" encoding="UTF-8" ?>
<project name="sample" basedir=".">

  <property name="project" value="sample" />
  <property name="version" value="0.0.1" />
  <property name="src.dir" location="src/main/java" />
  <!-- 追加 -->
  <property name="lib.dir" location="/path/to/lib" />
  <property name="build.dir" location="target/classes" />

  <!-- 追加 -->
  <path id="classpath">
    <pathelement location="${lib.dir}/commons-lang3-3.3.2.jar" />
  </path>

  <target name="echo">
    <echo message="Hello, World!" />
  </target>

  <target name="package" depends="compile">
    <jar destfile="${project}-${version}.jar" basedir="${build.dir}" />
  </target>

  <target name="compile" depends="clean">
    <mkdir dir="${build.dir}" />
    <!-- classpathrefを追加 -->
    <javac includeAntRuntime="false"
      srcdir="${src.dir}"
      destdir="${build.dir}"
      classpathref="classpath"
    />
  </target>

  <target name="clean">
    <delete dir="${build.dir}" />
  </target>

</project>
  • HelloWorldをコンパイルします。
$ ant compile
Buildfile: /path/to/projects/sample/build.xml

clean:
   [delete] Deleting directory /path/to/projects/sample/target/classes

compile:
    [mkdir] Created dir: /path/to/projects/sample/target/classes
    [javac] Compiling 1 source file to /path/to/projects/sample/target/classes

BUILD SUCCESSFUL
Total time: 1 second
  • HelloWorldを実行します。
$ java -cp target/classes:/path/to/lib/commons-lang3-3.3.2.jar HelloWorld
Hello, World!
* Java version : 24.55-b03
* OS name :Linux
* OS version :2.6.32-431.el6.x86_64
  • パッケージング(jarの生成)を行います。
$ ant
Buildfile: /path/to/projects/sample/build.xml

clean:
   [delete] Deleting directory /path/to/projects/sample/target/classes

compile:
    [mkdir] Created dir: /path/to/projects/sample/target/classes
    [javac] Compiling 1 source file to /path/to/projects/sample/target/classes

package:
      [jar] Building jar: /path/to/projects/sample/sample-0.0.1.jar

BUILD SUCCESSFUL
Total time: 1 second
  • パッケージを確認します。
$ ls -l /path/to/porjects/sample
total 16
-rw-rw-r--. 1 admin admin 1011 Sep 26 01:07 build.xml
-rw-rw-r--. 1 admin admin 1219 Sep 26 01:26 sample-0.0.1.jar
drwxrwxr-x. 4 admin admin 4096 Sep 25 05:31 src
drwxrwxr-x. 3 admin admin 4096 Sep 26 01:26 target

$ java -cp /path/to/projects/sample/sample-0.0.1.jar:/path/to/lib/commons-lang3-3.3.2.jar HelloWorld
Hello, World!
* Java version : 24.55-b03
* OS name :Linux
* OS version :2.6.32-431.el6.x86_64

参考

18
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?