GroovyでMavenで単一の配布可能なjar作成 (3)

  技術情報

タイトルとは少しずれてきましたが、WSDLからjavaソースを生成するというレアなタスクをmavenで対応できたのでメモしておきます。

もともとのプロジェクトではantビルドでexecタスクからバッチファイルを実行していました。

	<target name="wsdl_to_java">
		<exec dir="./jaxb" executable="cmd">
			<arg line="/c wsdlToJava.bat ../${SRC_DIR} ../${WSDL_FILE}"/>
		</exec>
	</target>
set LIB_HOME=.
set JAXB_LIBS=%LIB_HOME%\jaxb-api.jar
set JAXB_LIBS=%JAXB_LIBS%;%LIB_HOME%\jaxb-xjc.jar
set JAXB_LIBS=%JAXB_LIBS%;%LIB_HOME%\jaxb-impl.jar

java -Dfile.encoding=UTF-8 -cp %JAXB_LIBS% com.sun.tools.xjc.XJCFacade -d %1 %2 -b custom-binding.xml -wsdl -target 2.1

こんな感じです。

既にgroovyをコンパイルするために maven-antrun-plugin プラグインを導入済ですので、ここへタスクを追加します。

生成されるjavaソースはgroovy側から参照するので、groovyのコンパイルより前にタスクを追加します。

バッチファイルにはなっていますが、Ant:java プログラムなので javaタスクを使用します。実行に必要なjarは諸般の理由で java6フォルダからプロジェクトの/toolsフォルダへコピーしてあります。

<tasks>
    <java classname="com.sun.tools.xjc.XJCFacade"
        classpath="${basedir}/tools/jaxb-api.jar;
                   ${basedir}/tools/jaxb-xjc.jar;
                   ${basedir}/tools/jaxb-impl.jar;" >
        <sysproperty key="file.encoding" value="UTF-8" />
        <arg value="-d" />
        <arg value="${basedir}/src/main/java"/>
        <arg value="${basedir}/src/main/WSDL/xxxx/xxxx_External.wsdl"/>
        <arg value="-b"/>
        <arg value="${basedir}/tools/custom-binding.xml"/>
        <arg value="-wsdl"/>
        <arg value="-target"/>
        <arg value="2.1"/>
    </java>
    <mkdir dir="${basedir}/src/main/groovy" />
    <taskdef name="groovyc"
        classname="org.codehaus.groovy.ant.Groovyc">
  続く

/src/main/java へ生成されたjavaソースが出力されます。コンパイルについては記述の必要はなかったです。

参考にしたサイト

Ant「javaタスク」メモ(Hishidama’s ant-java Memo)

https://www.ne.jp/asahi/hishidama/home/tech/ant/tag/java.html

LEAVE A COMMENT