2つの異なるプロジェクトがあります。そして、コントローラーは2つのプロジェクトでほぼ同じです。
プロジェクトAにはコントローラーがあります。したがって、それのために戦争を起こすことは問題ではありません。
しかし、プロジェクトBは、プロジェクトAコントローラーのコントローラーのjarファイルを必要としています。
プロジェクトBで使用できるプロジェクトAのコントローラーからjarファイルを生成する方法を教えてもらえますか?
2つの異なるプロジェクトがあります。そして、コントローラーは2つのプロジェクトでほぼ同じです。
プロジェクトAにはコントローラーがあります。したがって、それのために戦争を起こすことは問題ではありません。
しかし、プロジェクトBは、プロジェクトAコントローラーのコントローラーのjarファイルを必要としています。
プロジェクトBで使用できるプロジェクトAのコントローラーからjarファイルを生成する方法を教えてもらえますか?
このような場合のデフォルトの解決策は、2つの別々のモジュールを用意することです。1つは戦争用で、もう1つはコントローラーモジュール用です。Mavenとの戦いを開始しないでください。
プロジェクトAのパッケージを戦争として保管してください。プロジェクトAのpom.xmlにmavenjarプラグインを追加します。「mvncleanpackagejar:jar」を使用してプロジェクトをビルドします。それは瓶と戦争の両方を作成します。
@Shashankが指摘したように、mavenにmaven-jar-pluginを実行させることもできます。ただし、これにより、コンパイルされたクラスのみを含むJARのみが作成され、Webアプリケーションソースは作成されません。
mvn clean install
マルチモジュールプロジェクトで、明示的に呼び出すことなく、単純なコマンドでそれを行う簡単な方法がありますmvn clean install jar:jar
。
にを追加しmaven-jar-plugin
て>build>plugins
、「パッケージ」フェーズで呼び出します。
<project>
<packaging>war</packaging>
<!-- .. -->
<build>
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<classifier>classes</classifier>
</configuration>
<executions>
<execution>
<id>package-jar</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
これにより、大きな.warアーティファクトと小さな-classes.jarアーティファクトが作成されます。
アップデート2017-06-15:一方、JARファイルとしてマスクされたwarファイル(パッケージ化されたJavaクラスだけでなく)の正確なコピーが必要な場合は、との組み合わせを使用できます。WARのJARコピーを作成します。(私はたまたまそのような解決策を必要としていました-理由を聞かないでください;))maven-dependency-plugin
maven-install-plugin
warモジュールに依存する新しいモジュールを作成します。
<project>
<!-- ... -->
<dependencies>
<!-- ... -->
<dependency>
<groupId>your-group-id-here</groupId>
<artifactId>your-war-artifact-id-here</artifactId>
<version>${project.version}</version>
<type>war</type>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
</execution>
</executions>
<configuration>
<artifactItems>
<artifactItem>
<groupId>your-group-id-here</groupId>
<artifactId>your-war-artifact-id-here</artifactId>
<version>${project.version}</version>
<type>war</type>
<overWrite>true</overWrite>
<destFileName>jar-copy-of-war.jar</destFileName>
</artifactItem>
</artifactItems>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
</configuration>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<executions>
<execution>
<id>install-copy-of-war</id>
<phase>install</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<packaging>jar</packaging>
<classifier>copy-of-war</classifier>
<artifactId>${project.artifactId}</artifactId>
<groupId>your-group-id-here</groupId>
<version>${project.version}</version>
<file>${project.build.directory}/dependency/jar-copy-of-war.jar</file>
<generatePom>true</generatePom>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
これにより、warのコピーが作成され、「-copy-of-war.jar」という名前が付けられますが、「copy-of-war」はこのモジュールの分類子です。