アリとは何ですか?
Apache AntはJavaベースの世代ツールです。元の創設者であるJames Duncan Davidsonによると、このツールの名前は別のきちんとしたツールの頭字語です。
アリがすること:
生成ツールは、ソフトウェア開発で使用され、ソースコードやその他の入力ファイルを実行可能ファイル(およびおそらくインストール可能な製品イメージ形式)に変換します。アプリケーション生成プロセスがより複雑になると、各世代でまったく同じ生成ステップが使用され、一貫した生成バージョンをタイムリーに生成するために可能な限り多くの自動化を達成することがさらに重要になります。
アリの利点:
AntはJavaベースのビルドツールです。理論的には、それは(unix)cでmake in in(unix)cと多少似ていますが、makeには欠陥はありません。最新バージョンは次のとおりです。Ant1.8.4。 私たちはすでにMake、Gnumake、Nmake、Jam、その他のビルドツールを持っているので、なぜ新しいビルドツールが必要なのですか? Antの元の著者は、複数の(ハードウェア)プラットフォームでソフトウェアを開発する際に、これらのツールの制限と不便を許容できないためです。メイクのようなツールは、本質的にシェルベースです。依存関係を計算して、コマンドを実行します(これらのコマンドは、コマンドラインで入力するコマンドとそれほど変わりません)。これは、OS固有または新しい(コマンド)プログラムを使用してツールを簡単に拡張できることを意味します。ただし、特定のOSまたはUNIXなどの特定のOSタイプに自分自身を制限することも意味します。
アリは異なります。シェルコマンドに基づく拡張モードとは異なり、ANTはJavaクラスを使用して拡張します。 (ユーザー)シェルコマンドを作成する必要はありません。構成ファイルはXMLに基づいています。ターゲットツリーを呼び出すことで、さまざまなタスクを実行できます。各タスクは、特定のタスクインターフェイスを実装するオブジェクトによって実行されます。
ANTは、クロスプラットフォームJavaクラスを使用する生成されたファイル間の依存関係を定義します。 ANTを使用すると、ANTの最大の利点であるJavaプラットフォームで一貫して動作する単一のジェネレーターファイルを書くことができます(Ant自体がJava言語で実装されているため)
アリはファイル分析を生成します:
ANTは独自のカスタム構文を定義していません。代わりに、その生成されたファイルはXMLで記述されます。 ANTが理解できる事前定義されたXML要素のセットがあり、ANTの機能を拡張するために新しい要素を定義することもできます。各ビルドファイルは、単一のプロジェクト要素で構成され、1つ以上のターゲット要素が含まれます。ターゲットは、ソースファイルのセットをコンパイルするなど、任意の数の操作を実行する生成プロセスの定義されたステップです。また、これらの操作自体は他の専用タスクタグによって実行され、これらのタスクは必要に応じて個々のターゲット要素にグループ化されます。単一の生成プロセスに必要なすべての操作は、単一のターゲット要素に配置できますが、柔軟性を低下させます。通常、これらの操作を論理生成ステップに分割することが望ましいです。各ステップは、独自のターゲット要素に含まれています。これにより、生成プロセス全体の個々の部分を必ずしも他の部分を実行することなく実行できます。
たとえば、特定のターゲットのみを呼び出すことにより、インストール可能なプロジェクトファイルを作成することなく、プロジェクトのソースコードをコンパイルできます。トップレベルのプロジェクト要素には、ANTが呼び出された場合に実行されるターゲットを指定するデフォルト属性を含める必要があります。次に、ターゲット要素を使用してターゲット自体を定義する必要があります。
これが基本的な生成されたファイルです:
<?xml version = "1.0"?> <プロジェクトdefault = "init"> <ターゲット名= "init"> </ターゲット> </project>
Antの基本的な使用法:
1.環境変数の構成:
ant_home:c:/ant-1.8 -----> Antのインストール/減圧ディレクトリパス
パスへの追加:C:/ant-1.8/bin -----> binディレクトリパスのAnt
2.環境変数構成がCMDウィンドウを正常に開くかどうかを確認し、次にコマンドを入力します。
次の表示を参照してください。
ANTは、デフォルトでビルドするときにbuild.xmlファイルを使用する必要があるため、上記のプロンプトがあります。つまり、Antの環境が正常に構成されています。
3。antを使用して、Helloworldというフォルダーを作成します。
まず、build.xmlを編集する必要があります。
<?xml version = "1.0"?> <project default = "init"> <ターゲット名= "init"> <span style = "color:#ff0000;"> <mkdir dir = "helloworld"> </span> </target> </project>
次に、build.xmlファイルが配置されているディレクトリに切り替え、ANTを入力し、次のようにプロンプトがある場合は、フォルダーの作成が成功します。
(init部分はログの出力に相当します)
4. ANTを使用して、build.xmlファイルで変更するだけでいいマルチレベルのネストされたファイルディレクトリを作成することもできます。
<?xml version = "1.0"?> <Project Default = "init"> <ターゲット名= "init"> <span style = "color:#ff0000;"> <mkdir dir = "helloworld/a/b/c"/> </span> </ターゲット> </プロジェクト>
5.上記のようにマルチレベルディレクトリを削除します。
<?xml version = "1.0"?> <project default = "init"> <ターゲット名= "init"> <span style = "color:#ff0000;"> <delete dir = "helloworld"/> </span> </target> </project>
注:ここでは、パスは最高レベルのディレクトリパスを入力する必要があります。これはまさにANTツールのパワーです。
Javaのディレクトリを削除する場合は、ディレクトリが空でない限り削除できます。そうしないと、徐々に削除する必要があります。
ANTツールを使用して、サブディレクトリを含むフォルダーを直接削除できます。
別のサンプルXMLファイルを見てみましょう。
<?xml version = "1.0"?> <プロジェクトdefault = "init" name = "project"> <description> ANTビルドファイルでの説明タグの使用を導入する簡単なプロジェクト。 </description> <! - xmlコメントも使用できます - > <ターゲット名= "init"説明= "Argonデータベースを初期化"> <! - ここで初期化ステップを実行します - > </ターゲット> </project>
ご覧のとおり、XMLコメントはビルドファイル全体で明確にすることができます。さらに、ANTは独自の説明要素と説明属性を定義します。これは、より構造化された注釈を提供するために使用できます。
アリ属性:
ANTのプロパティは、プログラミング言語の変数に似ており、すべて名前と値があります。ただし、通常の変数とは異なり、設定されると、ANTのプロパティは変更されません。 Java言語の文字列オブジェクトのように、それらは不変です。これは最初は制限があるように見えるかもしれませんが、Antの単純な原則に従うことです。結局のところ、それはプログラミング言語ではなく発電機ツールです。既存のプロパティに新しい値を割り当てようとする場合、これはエラーとは見なされませんが、プロパティは既存の値を保持します
定義と使用プロパティ:
<プロパティ名= "Metal" Value = "Beryllium"/>
生成されたファイルの他の部分でこのプロパティを参照するには、次の構文を使用します。
次のようにコードをコピーします:$ {Metal}
たとえば、別のプロパティの値の一部であるそのような値を使用するには、次のようにラベルを書きます
<プロパティ名= "metal-database" value = "$ {metal} .db"/>
場所属性:
属性は、ファイルシステム上のファイルまたはディレクトリを参照するために多くの場合使用されますが、異なるパスセパレーター( /および / /)を使用するプラットフォームの場合、異なるプラットフォームにまたがるときに問題を引き起こす可能性があります。 ANTの位置属性は、プラットフォームに依存しない方法でファイルシステムパスを含めるように特別に設計されています。このような価値の代わりに場所を使用します。
<プロパティ名= "データベースファイル" location = "archive/databases/$ {metal} .db"/>場所属性に使用されるパス分離された文字は、現在のプラットフォームの正しい形式に変換されます。また、ファイル名は相対的であるため、プロジェクトのベースディレクトリに関連していると見なされます。また、次のように簡単に記述することもできます。
<プロパティ名= "データベースファイル" location = "archive/databases/$ {metal} .db"/>このタグの両方のバージョンは、異なるプラットフォームで同じ動作をします。
依存関係の定義:
プロジェクトを生成するには、一般的に多くの手順が必要です。たとえば、まずソースコードをコンパイルしてからJavaアーカイブファイル(JAR)にパッケージ化する必要があります。これらの手順の多くには明確に定義された順序があります。たとえば、コンパイラがソースコードから生成するまでクラスファイルをパッケージ化することはできません。ターゲットを順番に指定するのとは異なり、ANTは依存関係を定義するためにより柔軟なアプローチを取ります。各目標は、実行する前に達成する必要がある他のすべての目標に基づいて定義されます。これは、ターゲット要素の依存属性を使用して達成されます
<ターゲット名= "init"/> <ターゲット名= "preprocess"依存= "init"/> <ターゲット名= "コンパイル"依存= "init、preprocess"/> <ターゲット名= "パッケージ" = "compile"/>
この方法により、プロジェクトの任意の段階で生成プロセスを実行できます。 ANTは、最初に定義された前提条件フェーズを実行します。上記の例では、ANTがコンパイルステップを完了した場合、最初にINITとPREPROCESSの2つの目標を実行する必要があると判断されます。 initターゲットは他のターゲットに依存しないため、最初に実行されます。 Antは、PreprocessStargetをチェックし、INITターゲットに依存することを発見します。後者が実行されているため、Antは再び実行しないため、Preprocessターゲットの実行を開始します。最後に、コンパイルタスク自体を実行できます。
生成されたファイルにターゲットが表示される順序は重要ではないことに注意してください。