マルチモジュール Maven プロジェクトとして C/S フレームワークを作成しました。「サーバー」、「クライアント」、「共通」の 3 つのモジュールがあります。「共通」モジュールのクラスは、「サーバー」と「クライアント」の両方で使用されます。
ただし、スタンドアロンは必要ありませんcommon.jar
。server.jar
代わりに、「共通」モジュールのクラスをandに直接コンパイルしたいと思いますclient.jar
。私がそれを作ることができる方法はありますか?
マルチモジュール Maven プロジェクトとして C/S フレームワークを作成しました。「サーバー」、「クライアント」、「共通」の 3 つのモジュールがあります。「共通」モジュールのクラスは、「サーバー」と「クライアント」の両方で使用されます。
ただし、スタンドアロンは必要ありませんcommon.jar
。server.jar
代わりに、「共通」モジュールのクラスをandに直接コンパイルしたいと思いますclient.jar
。私がそれを作ることができる方法はありますか?
Maven 依存関係プラグインを使用して、共通の jar を他のプロジェクト に展開できます。
定義済みの記述子 jar-with-dependencies で Maven アセンブリ プラグインを使用する
オプション 1: 「サーバー」プロジェクト pom.xml に以下を含めます。
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.3</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
これには、他のサードパーティの依存関係がある場合も含まれます。
オプション 2: このオプションは、サード パーティのライブラリがあれば除外します。
1. pom.xml と同じディレクトリに、以下のように assembly.xml を作成します。
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>custom</id>
<formats>
<format>jar</format>
</formats>
<dependencySets>
<dependencySet>
<outputDirectory>/</outputDirectory>
<useProjectArtifact>true</useProjectArtifact>
<unpack>true</unpack>
<scope>runtime</scope>
<includes>
<include>common</include>
</includes>
</dependencySet>
</dependencySets>
</assembly>
include タグには<groupId>:<artifactId>
format が含まれている必要があります。ここでは、あなたの groupId がわからないため、artifactId 'common' のみが言及されています。
2.「サーバー」pom.xml に以下を含めます。
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.3</version>
<configuration>
<descriptors>
<descriptor>assembly.xml</descriptor>
</descriptors>
</configuration>
</plugin>
</plugins>
</build>
アセンブリ コマンド (assembly:single) を実行します。