ページ更新: 2004-09-09 (木) (5425日前)

2004-09-09

[編集]

目次 #

[編集]

前提条件 #

開発中の Project_A から流用できる部分を Common に切り出して、 それを Project_B でも使う場合のファイル構成。

Project_A, Project_B はいずれも開発中なので、Common の内容も 随時変更される。

  • eclipse で開発し、Ant でもコンパイルできるようにする。
  • 可能であれば、NetBeans (GUI作成が便利そう)、JBuilder (古くからのユーザが多い) でも ファイル構成の変更なしで使いたい。
[編集]

Common ではライブラリを export しない #

  [Project_A]
     + [lib]
        commons-lang-1.0.jar ...... 
        commons-digester.jar      ..... このプロジェクトのみで使う
  [Project_B]
     + [lib]
        commons-lang-1.0.jar ...... 
        commons-httpclient-2.0.jar .... このプロジェクトのみで使う
  [Common]
    common.jar
     + [lib]
        commons-lang-1.0.jar ...... 
[編集]

デメリット #

  • Common で使っているライブラリと、Server/Client で使っている ライブラリのバージョンの不一致が発生する可能性がある。
  • eclipse でライブラリのソースコードとJavaDocの設定を プロジェクトの数だけ行う必要があり、面倒。 (.classpath をエディタで編集すれば、少し楽になるが)
[編集]

メリット #

  • Ant のスクリプトも、自分自身のディレクトリ [lib/] だけを 参照すればよいので、わかりやすい。
[編集]

Common で使っているライブラリのみ export #

  [Project_A]
     + [lib]
        commons-digester.jar      ..... このプロジェクトのみで使う
  [Project_B]
     + [lib]
        commons-httpclient-2.0.jar .... このプロジェクトのみで使う
  [Common]
    common.jar
     + [lib]
        commons-lang-1.0.jar      ..... export
[編集]

デメリット #

  • Server/Client をコンパイルするときにも Common のディレクトリ (lib/ 以下)が必要になる。
  • Ant のスクリプトも、自分自身以外のディレクトリを参照する 必要がある。(すでに参照してるが)
[編集]

メリット #

  • Common で使っているライブラリと、Server/Client で使っている ライブラリのバージョンの不一致がなくなる。
[編集]

Common と無関係に、2つのプロジェクトで共通で使うライブラリを export #

  [Project_A]
     + [lib]
        commons-digester.jar
  [Project_B]
     + [lib]
        commons-httpclient-2.0.jar .... このプロジェクトのみで使う
  [Common]
    common.jar
     + [lib]
        commons-lang-1.0.jar      ..... export
[編集]

デメリット #

  • Server/Client で、別のバージョンのライブラリは使えなくなる。
  • 共通で使うライブラリ <-> 個別のプロジェクトのみで使うライブラリの 入れ替えを意識する必要がある。 (上の例の場合、commons-digester.jar を Project_B で使うときは、 Project_A から Common に移動する。)
  • Common の lib/ には、Common には必要のないライブラリも置かれるため、 メンテナンスのときに間違って消されてしまう恐れがある。 (eclipse 上ですぐにエラーが出るが、エディタ + Ant であればコンパイルするまで 判明しない)
[編集]

メリット #

  • Common で使っているライブラリと、Server/Client で使っている ライブラリのバージョンの不一致がなくなる。
  • Server/Client で使っているライブラリのバージョンの不一致がなくなる (逆に、別のバージョンのライブラリは使えなくなる)