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をクリック
- Create a simple projectにチェックを付け、プロジェクトを設けるワークスペースディレクトリを指定し、Nextをクリック
- Group Id, Artifact Id, Versionを入力、Packagingはpomに変更、Finishをクリック
成果物を生成するプロジェクトを作成¶
- Fileメニュー > New > Project で New Project ダイアログを開く
- Maven > Maven Module を選択し、Nextをクリック
- Create a simple projectにチェックを付け、Module Nameを入力、Parent Projectに親プロジェクトを選択し、Nextをクリック
- 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
オプションに対応する定義です。