特定の方法で(jarファイルとしてではなく)ビルドおよびデプロイされているアーティファクトがあります。デプロイメントの過程で、warファイルが作成されます。
アーティファクトがjarファイルとして別の場所にデプロイされるようにpomを構成するにはどうすればよいですか?
Maven deploy
は、アーティファクトをアプリケーションサーバーではなくMavenリポジトリにデプロイすることを意味します。
次のように追加のJARアーティファクトを構成します。
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>make-a-jar</id>
<phase>compile</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
この新しいアーティファクトをプロジェクトに添付します。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>attach-artifacts</id>
<phase>package</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>some file</file>
<type>jar</type>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
この ブログ投稿 とそのコメントに答えがあります。
これらの3つのプラグイン構成により、戦争と並行してjarバージョンをビルド/インストール/デプロイできます。
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>make-a-jar</id>
<phase>compile</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<packaging>jar</packaging>
<artifactId>${project.artifactId}</artifactId>
<groupId>${project.groupId}</groupId>
<version>${project.version}</version>
<file>
${project.build.directory}/${project.artifactId}-${project.version}.jar
</file>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<executions>
<execution>
<phase>deploy</phase>
<goals>
<goal>deploy-file</goal>
</goals>
<configuration>
<packaging>jar</packaging>
<generatePom>true</generatePom>
<url>${project.distributionManagement.repository.url}</url>
<artifactId>${project.artifactId}</artifactId>
<groupId>${project.groupId}</groupId>
<version>${project.version}</version>
<file>${project.build.directory}/${project.artifactId}-${project.version}.jar</file>
</configuration>
</execution>
</executions>
</plugin>
「mavenの方法」は、src/main/Java
を別のモジュールに分割し、warファイルをそれに依存させることです。
そのアプローチに完全に抵抗する場合は、プロファイルを使用してpackaging
要素の内容を変更できる可能性があります。それが可能かどうかはわかりませんが。
それらを分離することは正しい方法です。 Mavenに同じモジュールで戦争と瓶を生成させることは可能ですが、将来的に問題が発生します。
Pomファイルの依存関係にアーティファクトの対応する依存関係を追加する必要があります。
例:
<dependency>
<groupId>org.Apache.myfaces.core</groupId>
<artifactId>myfaces-api</artifactId>
<version>1.2.2</version>
<scope>compile</scope>
</dependency>
これを解決する1つの方法は、モジュールにjarをビルドさせてから、Assemblyプラグインを使用して、そのwarのWEB-INF/libにあるjarを使用してwarファイルをビルドすることです。これには強くお勧めします。 jarプロジェクトとwarプロジェクトがあり、親プロジェクトが両方のモジュールを構築している方がよいでしょう。