PMD jar を ant ビルドに追加したいのですが、jar をソース管理にチェックインして、他の開発者が環境を変更する必要がないようにしたいと考えています。したがって、ant lib フォルダーへのコピーは理想的な状況ではありません。そのjarファイルをantクラスパスに追加する別の方法はありますか?
1 に答える
私は、ソース コード リビジョン システムで jar を保存するのが好きではありません。理由は理解できますが、SCM システムは大きなバイナリ オブジェクトの格納には適していません。
マシン間でビルドを再現可能にするためのいくつかの代替オプションを次に示します。
オプション 1: 「ブートストラップ」ターゲットを作成する
ANT のget タスクを使用して、PMD jar を ANT からアクセス可能なディレクトリ、つまり $HOME/.ant/lib にダウンロードします。
<target name="bootstrap" description="Install jars required by build">
<mkdir dir="${user.home}/.ant/lib"/>
<get src="http://search.maven.org/remotecontent?filepath=pmd/pmd/4.3/pmd-4.3.jar" dest="${user.home}/.ant/lib/pmd.jar"/>
</target>
オプション 2: 依存関係管理を使用する
Ivyを使用して、ビルドのすべての依存関係を管理できます (Maven と同様)
ivy を使用する利点は、(構成を使用して) すべてのビルド クラスパスを管理するために使用できることです。
<target name="resolve" description="Use ivy to resolve classpaths">
<ivy:resolve/>
<ivy:cachepath pathid="compile.path" conf="compile"/>
<ivy:cachepath pathid="build.path" conf="build"/>
</target>
ivy.xmlというファイルに、プロジェクトの依存関係がリストされます。
<ivy-module version="2.0">
<info organisation="com.myspotontheweb" module="demo"/>
<configurations>
<conf name="compile" description="Required to compile application"/>
<conf name="build" description="Required by the ANT build"/>
</configurations>
<dependencies>
<!-- compile dependencies -->
<dependency org="org.slf4j" name="slf4j-api" rev="1.6.4" conf="compile->default"/>
<!-- build dependencies -->
<dependency org="pmd" name="pmd" rev="4.3" conf="build->default"/>
</dependencies>
</ivy-module>
このオプションはより複雑に見えますが、すべてのサードパーティの jar を管理するために使用できます。また、jar が他の jar に対して持つ可能性のある推移的な依存関係を理解するという利点もあります。
オプション 3: ソナー
Sonarプロジェクトについて聞いたことがありますか?
オプション 1 または 2 を使用して単一の jar ファイルをインストールできます。これにより、次の分析ツールに必要な jar が自動的にダウンロードされます。
- PMD
- バグを見つける
- チェックスタイル
調査する価値があります。