電子書籍の厳選無料作品が豊富!

現在、Eclipseで2つのプロジェクト(Lib、Toolとします)を作成しており、ToolはLibに定義された内容を用いています。
Toolは私の担当ですがLibは別の人が担当しており、まだ内容変更の可能性があるため、ソースのコピーはせず、Toolのプロジェクトの設定にて、Libのソースへのリンクを設定しました。
これでToolの(Eclipseのメニューによる)ビルドはできるようになったのですが、これをantでビルドしたいとき、build.xmlをどのように書けばよいのかわからず困っています。

Toolのビルドに先立ってLibをビルドしたいですが、Tool側にソースがないのでbuild.xmlにどう書けばよいのやら・・・という状態です。
(できるだけ「自分の環境でしか動かない」という書き方はしたくないですし。)

どなたか、何かご存知ないでしょうか?
皆様の知識やお知恵を貸していただければと思います。


以下にbuild.xmlの一部を抜粋します。

-----------------------------------
<?xml version="1.0" encoding="utf-8"?>

<project name="tool" basedir=".">

<!-- ====================================================== -->
<!-- set properties for this build -->
<!-- ====================================================== -->
<property name="bin" value="bin"/>
<property name="dist" value="dist"/>
<property name="src" value="WEB-INF/src" />
<property name="lib" value="WEB-INF/lib" />

<!-- ====================================================== -->
<!-- make WAR -->
<!-- ====================================================== -->
<target name="compile" depends="init">
<!-- compile -->
<javac srcdir="${src}"
destdir="${bin}"
includes="hoge/tool/*.java, hoge/util/*.java">

<classpath>
<fileset dir="${lib}">
<include name="*.jar"/>
</fileset>
</classpath>

</javac>

<!-- make jar -->
<jar destfile="${dist}/tool.jar"
basedir="${bin}"
update="true">
</jar>

<!-- make war -->
<war destfile="${dist}/tool.war" webxml="WEB-INF/web.xml">
<fileset dir="." includes="index.jsp, error.jsp"/>
<lib dir="${lib}" includes="*.jar"/>
<lib dir="${dist}" includes="tool.jar"/>
<classes dir="${src}" includes="log4j.xml"/>
</war>

</target>
-----------------------------------

このままantを実行すると、Libの内容を参照している箇所でパッケージが見つからないとかシンボルが解決できないといったエラーが出ます。
以下にエラーを抜粋します。

-----------------------------------
Buildfile: C:\eclipse_workspace\Tool\build.xml
init:
compile:
[javac] Compiling 9 source files to C:\eclipse_workspace\Tool\bin
[javac] C:\eclipse_workspace\Tool\WEB-INF\src\hoge\tool\Decoder.java:3: パッケージ hoge.lib は存在しません。
[javac] import hoge.lib.HogeException;
[javac] ^
(以下省略)
-----------------------------------

A 回答 (1件)

こんにちわ。


先にlibをコンパイルすればいいように思います。
ただ、どの環境でも動くというのは難しいと思います。
libとtoolの両ソースが存在しないと駄目ですし、、、。

それより、折角プロジェクトが分かれてるのだから、libの人にjarとしてライブラリをリリースしてもらい、それを使ってtoolのコンパイルをするとか。。。
でないとlibの人がいじってる途中のソースをコンパイルしてしまうかもしれませんよね。
    • good
    • 0
この回答へのお礼

やはり、Lib側でビルドして(JARを作って)もらって・・・というのが一番妥当な解決方法なのですね。
担当者と話し合って、この方法を採れるようにしようと思います。
有難うございました。

お礼日時:2009/02/10 18:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!