2008-08-26 16 views
7

新しいプロジェクトを作成するたびに、最後のプロジェクトのantファイルを新しいプロジェクトにコピーし、適切な変更を加えます(同時に次のプロジェクトに柔軟性を持たせる)。しかし、私は最初にそれについて本当に考えなかったので、ファイルは本当に醜いように見え始めました。ベストApache Antテンプレート

新しいプロジェクトに簡単に移植できるAntテンプレートがありますか? 1つを作るためのヒント/サイト

ありがとうございます。

答えて

9

テンプレートを作成する代わりに、現在のプロジェクトのAntスクリプトを徐々に一般化して、次回のプロジェクトで使用するために変更を少なくするように進化させることもできます。あなたができることはいくつかあります。

ファイル名に$ {ant.project.name}を使用すると、プロジェクト名にアプリケーション名を記述するだけで済みます。たとえば、myapp.jar生成する場合:

<project name="myapp"> 
    ... 
    <target name="jar"> 
     ... 
     <jar jarfile="${ant.project.name}.jar" ... 

構造ソースディレクトリ構造を使用すると、ディレクトリ全体をコピーするのではなく、個々のファイルに名前を付けることで、あなたのビルドをパッケージ化することができるように。マシン固有およびプロジェクト固有のビルドファイルのプロパティの

<copy todir="${war}/WEB-INF/lib" flatten="true"> 
    <fileset dir="lib" includes="**/*.jar"> 
</copy> 

使用プロパティファイル:あなたはWebアプリケーションアーカイブにJARファイルをコピーしている場合たとえば、ような何かを行います。

<!-- Machine-specific property over-rides --> 
<property file="/etc/ant/build.properties" /> 

<!-- Project-specific property over-rides --> 
<property file="build.properties" /> 

<!-- Default property values, used if not specified in properties files --> 
<property name="jboss.home" value="/usr/share/jboss" /> 
... 

Antプロパティを設定し、一度に変更することはできませんので、あなたが前にデフォルト値を新しい値を定義することで、値を上書きすることに注意してください。

0

私はまったく同じことをしていました....そして、私はmavenに切り替えました。 MavenはシンプルなXMLファイルを使ってビルドを構成し、シンプルなリポジトリを使用してビルドの依存関係を管理します(コードを使ってこれらの依存関係をソース管理システムにチェックするのではなく)。

私が本当に好きなのは、あなたのjarファイルを簡単にバージョンアップできることです。あなたのライブラリのレガシーユーザーが以前のバージョンを簡単に利用できるようにするのが簡単です。これは、junitのように、使用するライブラリをアップグレードしたいときにも有効です。これらの依存関係は別のファイル(バージョン情報付き)としてMavenリポジトリに保存されるため、古いバージョンのコードでは常に依存関係が利用可能です。

これは優れたAntです。

+3

Mavenはantよりも良いかもしれませんが、これは質問に答えません。常にmavenに切り替えることができるという贅沢はありません。 –

+1

そして、私の経験からすると、それは常に贅沢ではありません:( –

0

私はまったく同じことをしていました....私はmavenに切り替えました。

ああ、それはMaven 2です。私は、誰かが今でもMavenを真剣に使用していたことを恐れていました。ジョークを離しておく:Maven 2に切り替えることに決めた場合、Maven 2はMavenの完全な再実装であり、いくつかの基本的な設計上の決定が変更されているので、情報を探す際には注意が必要です。残念ながら、彼らは過去の混乱の大きな原因となっていた名前を変更しませんでした(そして、時には、ウェブの "記憶"の性質を考慮して)。

あなたがAntの精神にとどまりたい場合は、Ivyを使用して依存関係を管理することもできます。

1

ディレクトリ構造が似ているいくつかのプロジェクトで作業していて、Mavenに行くのではなくAntを使用したい場合は、Import taskを使用してください。プロジェクトビルドファイルにテンプレートをインポートして任意の変数(クラスパス、依存関係など)を定義して、realビルドスクリプトをインポートしたテンプレートでオフにすることができます。テンプレート内のタスクをオーバーライドすることもできます。これにより、プロジェクト固有の事前または事後のターゲットフックを入れることができます。

+0

はい、それは主に私が考えているものです。実際のビルドスクリプトでインポートされるテンプレートを投稿できますか? – pek

0

Eclipseを使用している場合は、ant4eclipseタスクをチェックしてください。 Eclipseで設定された詳細(ソースディレクトリ、依存プロジェクトを含むビルドパス、ビルド順など)を尋ねる単一のビルドスクリプトを使用します。

これにより、依存関係を1か所(eclipse)で管理し、コマンドラインビルドを使用して自動化することができます。

1

私は同じ問題を抱えてテンプレートを一般化し、自分自身のプロジェクトで成長させました:Antiplate。たぶんそれはあなたにとっても役に立ちます。

6

http://import-ant.sourceforge.net/を試すことができます。 シンプルなカスタムビルドファイルの作成に使用できる一連のビルドファイルスニペットです。

+0

受諾された回答以外に、この回答は、実際に質問に答えるために最も近いところに来ています。単に「より良い」代替ソリューションを提供するだけではありません。 – Steen

関連する問題