プロジェクト

全般

プロフィール

Eclipse mavenプロジェクト

マルチプロジェクト

項目 内容
Eclipse 2021-12-R
Maven T.B.C.

おなじソースツリーにおいて、複数の成果物を生成するには、マルチプロジェクトを構成します。
マルチプロジェクトでは、一つの成果物を作るプロジェクトを複数作成し、この複数のプロジェクトを束ねるルートプロジェクトを設けます。

ディレクトリツリー

workspace
  +-- myroot
  +-- mylib
  +-- myapp

プロジェクト定義

No. Project Name GroupId ArtifactId packaging
1 helloroot com.torutk.hellomaven helloroot pom
2 hellolib hellolib jar
3 helloapp helloapp jar

プロジェクトをeclipse上で作成

親プロジェクトとなるプロジェクトを作成

  • Fileメニュー > New > Project で New Project ダイアログを開く
  • Maven > Maven Project を選択し、Nextをクリック

clipboard-202204031336-4owxc.png

  • Create a simple projectにチェックを付け、プロジェクトを設けるワークスペースディレクトリを指定し、Nextをクリック

clipboard-202204031342-2fkg6.png

  • Group Id, Artifact Id, Versionを入力、Packagingはpomに変更、Finishをクリック

clipboard-202204031348-oavlu.png

成果物を生成するプロジェクトを作成

  • Fileメニュー > New > Project で New Project ダイアログを開く
  • Maven > Maven Module を選択し、Nextをクリック

clipboard-202204031400-z6m6i.png

  • Create a simple projectにチェックを付け、Module Nameを入力、Parent Projectに親プロジェクトを選択し、Nextをクリック

clipboard-202204031403-8mq6e.png

  • GroupIdには親プロジェクトで定義したIdがデフォルトで記載、Artifact IdはModule Nameがデフォルトで記載, Versionを入力、Finishをクリック

プロジェクト間の依存関係

  • myapp プロジェクトのpom.xmlにmylibへの依存を記述する方法
  <dependencies>
    <dependency>
      <groupId>com.torutk.hellomaven</groupId>
      <artifactId>hellolib</artifactId>
      <version>0.0.1-SNAPSHOT</version>
    </dependency>
  </dependencies>

これは、各プロジェクトのpom.xmlに依存するプロジェクトのgroupId、artifactIdのほかversionも記述する必要がある。versionは開発中は頻繁に更新するので、個別のプロジェクトのpom.xmlを編集して回るのは大変(同じ修正をあちこちに記述しなくてはならない)。

  • 親プロジェクトのhelloroot のpom.xmlに dependencyManagementを記述し、各プロジェクトのpom.xmlにversionを記述しなくてもよいようにする

親プロジェクトのpom.xmlに、dependencyManagementで各プロジェクトの groupId、artifactId、versionを記述する。各プロジェクトのpom.xmlに依存関係を定義する際に、versionの指定が不要となる。これにより、バージョン記述を一元化することが可能。

親プロジェクトのpom.xml

  <dependencyManagement>
    <dependencies>
        <dependency>
          <groupId>com.torutk.hellomaven</groupId>
          <artifactId>hellolib</artifactId>
          <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
          <groupId>com.torutk.hellomaven</groupId>
          <artifactId>helloapp</artifactId>
          <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>
  </dependencyManagement>

サブプロジェクトのpom.xml

  <dependencies>
    <dependency>
      <groupId>com.torutk.hellomaven</groupId>
      <artifactId>hellolib</artifactId>
    </dependency>

参考文献

プロジェクト定義諸々

Javaのソース・コンパイルバージョン

親プロジェクトのプロパティに定義します。

OpenJDK 9以降であれば、リリースバージョンの定義を記述します。

  <properties>
    <maven.compiler.release>11</maven.compiler.release>
  </properties>

これは、javacコマンドの --release オプションに対応する定義です。