私はこれが推奨される方法ではないことを知っており、以下を読みました:
http://www.sonatype.com/people/2010/01/how-to-create-two-jars-from-one-project-and-why-you-shouldnt/
私は同意します。しかし、現在、次の問題を解決する必要があります。
複数の src フォルダー A および B を含むプロジェクトがあります (build-helper-maven-plugin を使用)。対応する 2 つの jar A (デフォルトの jar) と B を作成する必要があります。Jar A には src フォルダー A のクラスが含まれ、jar B には src フォルダー B のクラスが含まれます。
まず、デフォルトの jar A を作成し、src フォルダー B からすべてのクラスを除外しようとします。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>default-jar</id>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<excludes>
<exclude>**/B*</exclude>
</excludes>
</configuration>
</execution>
しかし、A jar を調べると、ソース フォルダー B のパッケージのクラスが含まれています。
以下の回答に基づいて、私は今やっています:
<properties>
<artifactId.model>${project.artifactId}-model-${project.version}</artifactId.model>
<artifactId.default>${project.artifactId}-${project.version}</artifactId.default>
</properties>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<id>make-model-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<finalName>${artifactId.model}</finalName>
<descriptors>
<descriptor>src/main/assembly/model.xml</descriptor>
</descriptors>
<attach>true</attach>
</configuration>
</execution>
<execution>
<id>make-default-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<finalName>${artifactId.default}</finalName>
<descriptors>
<descriptor>src/main/assembly/default.xml</descriptor>
</descriptors>
<attach>true</attach>
</configuration>
</execution>
</executions>
</plugin>
モデルの記述子は次のとおりです。
<assembly>
<id>model</id>
<formats>
<format>jar</format>
</formats>
<baseDirectory>target</baseDirectory>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${basedir}/model_a</directory>
<includes>
<include>**/**</include>
</includes>
</fileSet>
<fileSet>
<directory>${basedir}/model_b</directory>
<includes>
<include>**/**</include>
</includes>
</fileSet>
</fileSets>
</assembly>
次に、build-helper を使用して jar をアタッチします。上記の問題は明らかに、コンパイルされた .class ファイルではなく .java ファイルを取得することです。すべての .class ファイルはすべてのソース フォルダーの同じターゲット/クラス フォルダーにあるため (noahz のコメントを参照)、関連するパッケージの各 include/exclude を手動で指定する必要があります。サブプロジェクトを作成するのが最善の方法です。