2009-04-17 8 views
14

私はant + cpptasksで構築された大きなC++システムで作業しています。それは十分に機能しますが、新しいライブラリまたは実行可能なターゲットを追加するための標準的な操作手順のために、build.xmlファイルが手に入りません。もう1つのlib/exeのルール(既にかなり大きい)をコピーアンドペーストします。これが「適切なコード」だった場合は、リファクタリングのために叫び声を出すことになりますが、これは馴染みのない初心者(VisualStudioソリューションの作成に多く使われています)です。ant build.xmlファイルをどのように "リファクタリング"しますか?

アリのビルドファイルを爆発させるのを防ぐためのベストプラクティスは何ですか?

明白なオプションの1つは、XSLTを使用してbuild.xmlを生成し、一般的に繰り返されるパターン用に独自のタグを定義することです。誰か、それとももっと良い方法がありますか?

答えて

13

あなたは、に興味がある可能性があります

チェック "ant features for big projects" にも、この記事。

+2

リンクはもう機能しません。固定リンク:http://ant.apache.org/manual/Tasks/macrodef.htmlおよびhttp://ant.apache.org/manual/Tasks/import.htmlおよびhttp://ant.apache.org/manual /Tasks/subant.html –

+1

壊れたリンクを修正しました。 –

5

ルールが反復的である場合は、macrodefを使用してantマクロにそれらを取り込み、そのマクロを再利用することができます。

管理できないファイルのサイズが小さければ、それを小さなファイルに分割し、それらのファイル内でメインのbuild.xml呼び出しターゲットを持つことができます。

これらのどちらでもない場合は、ビルドシステムの使用を検討してください。自分でMavenを使用していないにもかかわらず、大規模で管理不能なビルドファイルの多くの問題を解決できると聞いています。

1

Ant-Ivy-the agile dependency managerを試してみます。私たちは最近、より複雑なシステムのいくつかにそれを使用し始めました。それは魅力のように機能します。ここでの利点は、オーバーヘッドと移行コストをmavenに与えることができないことです(これはantターゲットを使用するため、現在の設定で動作します)。 Here is a comparisonの2つです。

3

一般に、ビルドファイルが大きくて複雑な場合、これはフォルダやパッケージに関してコードがレイアウトされている方法が複雑で複雑すぎることを明確に示しています。私は、複雑なantスクリプトは、あまり配置されていないコードベースのはっきりとした匂いがあることを知っています。

これを修正するには、コードの配置方法を考えてください。いくつのプロジェクトがありますか?これらのプロジェクトは、個別のプロジェクト/アプリケーション/コンポーネントをより大きな全体にまとめる方法を知っているマスタービルドスクリプトを使用して自分自身を構築する方法を知っていますか。

コードをリファクタリングしているときは、理解しやすいように方法や目立ちを探しています。小さなメソッド、小さいクラス、メソッド、クラスは、1つのことを行います。これらの同じ原則をコードベースにも適用する必要があります。

機能的に凝集性があり、コードの残りの部分と非常に疎結合された、より小さなコンポーネントを作成します。ビルドスクリプトを使用して、そのコンポーネントをライブラリにビルドします。残りのコードでこれを行います。次に、すべてのライブラリをまとめてアプリケーションにビルドする方法を知っているマスタービルドスクリプトを作成します。複数のアプリケーションがある場合は、各アプリケーション用のビルドスクリプトを作成し、アプリケーションを配布可能なものにバンドルする方法を知っているマスタースクリプトを作成します。

ビルドスクリプトを見るだけで、コードベースのレイアウトと構造を理解して理解できるはずです。それらがきれいで理解できない場合、どちらもあなたのソースコードではありません。

3

Antlibファイルを使用してください。それは

  1. 削除コピー/貼り付けコード
  2. あなたは例を見たい場合は、あなたが私はbuild scriptのいくつかを見てとることができ、デフォルト値に

を定義するための非常にクリーンな方法です私のサンドボックスプロジェクトのために書く。

+0

antlibは非常に再利用可能なライブラリです。 – dfa

関連する問題