Hatena::Groupprogram

ひとり開発日記。 このページをアンテナに追加 RSSフィード

2013/11/21 (Thu)

S2JDBC-Gen用のライブラリをMavenで設定

| S2JDBC-Gen用のライブラリをMavenで設定 - ひとり開発日記。 を含むブックマーク はてなブックマーク - S2JDBC-Gen用のライブラリをMavenで設定 - ひとり開発日記。

S2JDBC-GenのAntタスクの多くは、実行時にエンティティクラスを参照します。 また、S2JDBCの動作に必要なjarファイルに加え、s2jdbc-gen-x.x.x.jarとfreemarker-2.3.x.jarが必要です。 すべてのAntタスクからエンティティクラスやjarファイルを参照できるように、あらかじめクラスパスを設定しておきます。

Seasar2 - S2JDBC-Gen - セットアップ

Doltengで作ったプロジェクトだと、配下に"lib"って言うディレクトリが作られて、そこに必要なjarファイルが入ってくるんですが、このjarが微妙に古い場合、差し替えが面倒なんですよねー…。 なので、以下のような手法を使っています。*1

必要な依存関係を、テストスコープでpom.xmlに記述

		<!-- S2JDBC-Gen -->
		<dependency>
			<groupId>org.seasar.container</groupId>
			<artifactId>s2jdbc-gen</artifactId>
			<version>${s2.ver}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.freemarker</groupId>
			<artifactId>freemarker</artifactId>
			<version>2.3.20</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.tmatesoft.svnkit</groupId>
			<artifactId>svnkit</artifactId>
			<version>1.7.8</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.geronimo.specs</groupId>
			<artifactId>geronimo-ejb_3.1_spec</artifactId>
			<version>1.0.2</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>sun.jdk</groupId>
			<artifactId>tools</artifactId>
			<version>1.7.0</version>
			<scope>system</scope>
			<systemPath>${java.home}/../lib/tools.jar</systemPath>
		</dependency>
		<!-- Junit -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.4</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.easymock</groupId>
			<artifactId>easymock</artifactId>
			<version>3.2</version>
			<scope>test</scope>
		</dependency>

テストスコープのjarを一括でダウンロード。

昨日のMavenで、依存ライブラリを一括ダウンロードする方法を使うのです。

mvn dependency:copy-dependencies -DincludeScope=test

s2jdbc-gen-build.xmlを修正

	<path id="classpath">
		<pathelement location="${classpathdir}"/>
		<fileset dir="target/xxx/WEB-INF/lib"/>
		<fileset dir="lib">
			<exclude name="lib/sources/**"/>
		</fileset>
	</path>

を、以下↓のように

	<path id="classpath">
		<pathelement location="${classpathdir}"/>
		<fileset dir="target/dependency"/>
	</path>

これで、antを叩くと、各タスクが実行できましたよ。

*1:ついこの前から、なんですが…。

トラックバック - http://program.g.hatena.ne.jp/halflite/20131121