Quantcast
Channel: プログラム の個人的なメモ
Viewing all articles
Browse latest Browse all 860

【Ant】 JARファイルの作成

$
0
0

はじめに

 * 実行可能なJARファイル作成をantで行う
 * antの以下のタスクのマニュアルが役立つ
http://www.jajakarta.org/ant/ant-1.6.1/docs/ja/manual/CoreTasks/jar.html
http://www.jajakarta.org/ant/ant-1.6.1/docs/ja/manual/CoreTasks/manifest.html

例1:単純なサンプル

com.sample.helloworld.Main.java

package com.sample.helloworld;

public class Main {
  public static void main(String[] args) {
    System.out.println("Hello World!");
  }
}

build.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?><project basedir="." default="create.jar" name="SampleJavaCodes"><property name="class.path" value="./class" /><property name="main.class" value="com.sample.helloworld.Main" /><property name="java.path" value="./src" /><property name="jar.name" value="SampleJar" /><property name="class.excludes" value="**/tests/**, **/**Test.class, **/**Tests.class, **/demo/**" /><target name="init" description="初期化"><delete dir="${class.path}"/><mkdir dir="${class.path}"/></target><target name="compile" depends="init" description="Javaコンパイル"><javac encoding="Shift-JIS" srcdir="${java.path}" destdir="${class.path}" includeantruntime="false" /></target><target name="create.jar" depends="compile" description="JAR作成"><jar destfile="${jar.name}.jar" basedir="${class.path}" excludes="${class.excludes}"><manifest><attribute name="Main-Class" value="${main.class}"/><attribute name="Class-Path" value="${class.path}"/><attribute name="Specification-Title" value="Sample Title"/><attribute name="Specification-Version" value="1.0.0"/><attribute name="Specification-Vendor" value="Sample Vendor"/></manifest></jar></target></project>

Jarファイルの実行

コマンドプロンプトを立ち上げて、以下のコマンドで実行する
> java -jar SampleJar.jar
Hello World!

補足:特定のクラスを除外するには

* 「excludes」を使う
【例】
  <property name="class.excludes" value="**/tests/**, **/**Test.class, **/**Tests.class, **/demo/**" /><target name="createJar" depends="compile" description="JAR作成"><jar destfile="${jarName}.jar" basedir="${class.path}" excludes="${class.excludes}"></jar></target>

例2:サブプロジェクト/ライブラリに依存したプロジェクトに対して、JARファイル作成

構成

 + Common(サブプロジェクト)
   + src
      + com.sample.Util.java
 + SampleProject(JARファイル作成の対象プロジェクト)
   + src
      + com.sample.Main.java
   + lib(使用するライブラリ)
      + log4j-1.2.17.jar

com.sample.Util.java

package com.sample;

public class Util {
  public static String sayHello(String name) {
    return "Hello, " + name + "!!";
  }
}

com.sample.Main.java

package com.sample;

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;

public class Main {
  private static Logger logger = Logger.getLogger(Main.class.getName());

  public static void main(String[] args) {
    BasicConfigurator.configure();
    logger.info("start!");

    System.out.println(Util.sayHello("Mike"));

    logger.info("Done!!");
  }
}

build.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?><project basedir="." default="compile" name="SampleProject"><property name="Common.location" value="../Common" /><property name="Common.src.location" location="${Common.location}/src" /><property name="class.path" value="./class" /><property name="main.class" value="com.sample.Main" /><property name="java.path" value="./src" /><property name="java.excludes" value="**/tests/**, **/**Test.java, **/**Tests.java, **/demo/**" /><property name="class.excludes" value="**/tests/**, **/**Test.class, **/**Tests.class, **/demo/**" /><path id="SampleProject.classpath"><fileset dir="${basedir}/lib"><include name="*.jar" /></fileset></path><target name="init" description="初期化"><delete dir="${class.path}" /><mkdir dir="${class.path}" /></target><target name="compile.sub-project" depends="init" description="サブプロジェクトのJavaコンパイル"><javac encoding="UTF-8" srcdir="${Common.src.location}" destdir="${class.path}" includeantruntime="false" /></target><target name="compile" depends="compile.sub-project" description="Javaコンパイル"><javac encoding="UTF-8" srcdir="${java.path}" destdir="${class.path}" includeantruntime="false"><classpath><path refid="SampleProject.classpath" /></classpath><exclude name="${java.excludes}" /></javac></target><target name="create.jar" depends="compile" description="JAR作成"><jar destfile="${ant.project.name}.jar" basedir="${class.path}" excludes="${class.excludes}"><zipgroupfileset dir="${basedir}/lib" includes="*.jar" /><manifest><attribute name="Main-Class" value="${main.class}" /><attribute name="Class-Path" value="${class.path}" /><attribute name="Specification-Title" value="Sample Title" /><attribute name="Specification-Version" value="1.0.0" /><attribute name="Specification-Vendor" value="Sample Vendor" /></manifest></jar></target></project>

Jarファイルの実行

コマンドプロンプトを立ち上げて、以下のコマンドで実行する
> java -jar SampleProject.jar
0 [main] INFO com.sample.Main  - start!
Hello, Mike!!
4 [main] INFO com.sample.Main  - Done!!


関連記事

【Ant】 Javaコンパイル / WAR ファイルの作成

https://blogs.yahoo.co.jp/dk521123/34019895.html

Viewing all articles
Browse latest Browse all 860

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>