Apache Ant-クイックスタート

Apache Antは、すべてのJavaプログラマーに馴染みがあるはずです。これは、完全にJavaで記述された一般的なビルドツールです。 Antは、通常のXMLファイルであるスクリプトを使用します。 Javaに焦点を当てていますが、Web開発者もこのツールを使用しています。



Antの使用を開始するには、 5つの簡単な手順実行ます



  1. ダウンロード、インストール、確認します。
  2. 簡単なHelloWorldスクリプトを書きましょう。
  3. 作業の原則とビルドスクリプトのXML形式を扱います。
  4. 最低限必要なタスクのリストを学習します。
  5. トレーニングプロジェクトの完全なアセンブリおよびテストサイクルのスクリプトを作成します。


Java SE開発キット (JDK、 www.oracle.com / technetwork / java / javase / downloadsからダウンロード)、お気に入りのテキストエディター(Linux-vi / vim / gedit、Windowsの場合はNotepad ++を推奨)、および基本的な作業スキルが必要です。コマンドラインで。 Javaのビルドスクリプトとサンプルは、Linux(Simply Linux 7.95.0、CentOS Linux 6.8)およびWindows(XP / 7)でテストされています。 Antの使用法は、LinuxとWindowsで同じです。



1.ダウンロード、インストール、確認



Linux: sudo apt-get install antなどのコマンドを使用してリポジトリからインストールします(必要に応じて、 apt-getyumに置き換えます)。 重要:1.8以上のバージョンが必要です。 CentOS 6.8リポジトリバージョン1.7.1。したがって、 前の記事で説明したスクリプトを使用することをお勧めします。



Windows: ant.apache.orgのWebサイトにアクセスし、「ダウンロード/バイナリ配布」セクションに移動して、apache-ant-1.10.1-bin.zipアーカイブをダウンロードします(おそらくより新しいバージョンが既にあるかもしれません)。 アーカイブの内容を任意のディレクトリにコピーします。たとえば、「C:\ Program Files \ Apache Ant」にコピーします。 次に、binディレクトリへのパス(C:\ Program Files \ Apache Ant \ bin)をPathシステム変数に追加します。



コマンドラインでantを呼び出して、パフォーマンスを確認します。

$ ant -version

2017年2月2日にコンパイルされたApache Ant(TM)バージョン1.10.1


同様のメッセージが受信された場合-すべてが正常です。



2. HelloWorldスクリプトの作成



<?xml version="1.0"?> <project name="HelloWorld" default="hello"> <target name="hello"> <echo>Hello, World!</echo> </target> </project>
      
      





ホームディレクトリにhelloサブディレクトリを作成し(Linuxではmkdirコマンドがこれを実行し、Windowsではmdコマンドを実行します)、上記のスクリプトを含むbuild.xmlというファイルを保存します。 このディレクトリに移動して、antを呼び出します。

$ mkdirこんにちは

$ cdこんにちは

$アリ

ビルドファイル:/home/lamp/hello/build.xml



こんにちは:

[echo]こんにちは、World!

成功する



合計時間:0秒


どうした Antは、デフォルト名(build.xml)のスクリプトファイルを検出し、 デフォルト属性を使用してプロジェクトタグでデフォルトで指定された名前helloでターゲットを実行しました( name属性を使用してプロジェクトタグでプロジェクト名も指定したことに注意してください)。 antを呼び出すときに、パラメーターとしてhelloを指定すると、同じ結果が得られます。

$ ant hello


3.仕事の基本原則



ビルドスクリプトは通常のXMLファイルです。 テキストはプロジェクトタグによって開かれ(閉じられ)、プロジェクト名とデフォルトの目標を指定できます。 さらに、目標( target )、依存関係( depend )およびプロパティ( property )の定義が含まれています。 最も単純なシナリオには、少なくとも1つの目標が必要です。 ターゲットタグでは、1つ以上のタスクの呼び出しを記述します。 ターゲットの場合、 name属性を使用して名前を指定できます(name = "name_of_target")。 指定された名前はスクリプトのコマンドになり、次のように対応するターゲットを呼び出すことができます。

$ ant name_of_target


ターゲットでは、 depends属性を使用して依存関係を指定できます。 依存関係は、相互にtarget'yを接続します。 たとえば、「compile」という名前のターゲットがあり、「compile」に依存する「run」という名前のターゲットがあります。 そして、「実行」を実行したい場合、「コンパイル」が最初に実行されます。



4.最低限必要なタスクのリスト(タスク)



Antの標準バージョンには150を超えるタスクが含まれています( https://ant.apache.org/manual/tasklist.html )。 今のところ、必要なのは7つだけです。





5. Javaプロジェクトを構築およびテストするためのスクリプト



Antは、ディレクトリ構造の形成において完全な自由を提供します。 helloディレクトリで、Javaソースのsrcサブディレクトリを作成します。

$ mkdir src


そして、 HelloWorld.javaファイルを次の内容で保存します。



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





そして、スクリプト(build.xml)のテキストを少し複雑にします。



 <?xml version="1.0"?> <project name="HelloWorld" default="run"> <target name="compile"> <mkdir dir="build/classes"/> <javac destdir="build/classes" includeantruntime="false"> <src path="src"/> </javac> </target> <target name="run" depends="compile"> <java classname="HelloWorld" classpath="build/classes"/> </target> <target name="clean"> <delete dir="build"/> </target> </project>
      
      





これで、スクリプトには3つのターゲット(コマンド)が含まれます: コンパイル (.javaファイルのコンパイル)、 実行 (.classファイルの起動)、 クリーン (コンパイル結果のフォルダーの削除)。 この場合、 コンパイルにmkdirjavacの 2つのタスクが含まれます。 依存関係に注意してください:ターゲットの実行、最初にcompileを呼び出します 。 さらに、 runはプロジェクトのデフォルトのターゲットです。



パラメーターなしでスクリプトを実行すると、Javaプログラムの結果が表示されます:Hello、World!



ディレクトリ名を直接指定することは、良いスタイルを意味しません。 特に、スクリプト内の名前が繰り返される場合。 プロパティを使用してbuild.xmlを変更し(projectで指定されたプロジェクト名がどのように役立つか注意してください)、コメントをいくつか追加します。



  <?xml version="1.0"?> <project name="HelloWorld" default="run"> <!-- define names of directories --> <property name="src" location="src"/> <property name="build" location="build"/> <property name="classes" location="${build}/classes"/> <!-- define all targets --> <target name="compile"> <mkdir dir="${classes}"/> <javac srcdir="${src}" destdir="${classes}" includeAntRuntime="false"/> </target> <target name="run" depends="compile"> <java classname="${ant.project.name}" classpath="${classes}"/> </target> <target name="clean"> <delete dir="${build}"/> </target> </project>
      
      





次に、ターゲットパッケージをスクリプトに追加して、jarファイルを作成します。



 <target name="package" depends="compile"> <jar destfile="${build}/${ant.project.name}.jar" basedir="${classes}"> <manifest> <attribute name="Main–Class" value="${ant.project.name}"/> </manifest> </jar> </target>
      
      





すべてが機能することを確認します。

$ antパッケージ

$ java -jar build / HelloWorld.jar

Hello World!


テストに移りましょう。 プロジェクトコードを変更します(テストするものがあるように)。



 public class HelloWorld { public static void main(String[] args) { HelloWorld hello = new HelloWorld(); System.out.println(hello.sayHello()); } String sayHello() { return "Hello, World!"; } }
      
      





そして、簡単なテストでsrcディレクトリにファイル/クラスTestHello.javaを追加します:



 import static org.junit.Assert.assertEquals; import org.junit.Test; public class TestHello { @Test public void testHello() { HelloWorld hello = new HelloWorld(); assertEquals("Hello, World!", hello.sayHello()); } }
      
      





https://github.com/junit-team/junit4/wiki/getting-startedページの情報を使用して、 junit-4.12.jarhamcrest-core-1.3.jarの 2つのファイルをダウンロードし、 JDK / jre /ディレクトリにコピーしますlib / ext (CentOS 6.8でこのコピーコマンドを使用):

$ sudo cp〜/ダウンロード/ *。jar /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-0.b13.el6_8.i386/jre/lib/ext/


これで、コマンドラインでテストの動作を確認できます。

$ java -cp build / classes org.junit.runner.JUnitCore TestHello

JUnitバージョン4.12



時間:0.281

OK(1テスト)


スクリプトに別のターゲットを追加します-test:



 <target name="test" depends="compile"> <junit> <classpath> <pathelement location="${classes}"/> </classpath> <test name="TestHello"/> </junit> </target>
      
      





ターゲットパッケージ (jar)の行を補完します



 <jar destfile="${build}/${ant.project.name}.jar" basedir="${classes}" excludes="Test*.class">
      
      





スクリプトのコマンドのリストにテストが追加されました(コンパイル、実行、パッケージ、クリーン)。

結論として、グリーティングが別のグラフィックウィンドウに表示されるように、プロジェクトのコードを変更します。 次に、jarファイルを作成し、ダブルクリックで実行します(jarファイルのダブルクリック実行を構成する必要があります)。



Javaコードの3番目のバージョン:



 import javax.swing.*; import java.awt.*; public class HelloWorld extends JFrame { public static void main(String[] args) { new HelloWorld(); } HelloWorld() { setTitle(sayHello()); setDefaultCloseOperation(EXIT_ON_CLOSE); setBounds(200, 200, 300, 200); JLabel label = new JLabel(sayHello(), SwingConstants.CENTER); label.setFont(new Font("", Font.BOLD, 24)); add(label); setVisible(true); } String sayHello() { return "Hello, World!"; } }
      
      





fork =“ true” (別の仮想マシンでクラスの実行を開始)を追加することにより、スクリプトを(ターゲットrunで )わずかに補足します。 そうでない場合、実行は機能しません(実験的に検証されます):



 <java classname="${ant.project.name}" classpath="${classes}" fork="true"/>
      
      





コマンドを実行してjarファイル($ antパッケージ)を作成し、ファイルエクスプローラーで〜/ hello / buildディレクトリを開き、そこでHelloWorld.jarを見つけ、マウスでダブルクリックして、グラフィックのウェルカムウィンドウを表示します。



All Articles