私たちは新しいプロジェクトの友人を持っており、彼の環境にプロジェクトをインストールしたいと考えています。しかし、Mavenリポジトリに存在しない依存関係が多すぎます。そのため、Mavenは役に立たなくなりました。アーティファクトをインストールするためにarchivaサーバーをインストールしましたが、すべての依存関係を1つずつデプロイしたくありません(プロジェクトjar自体だけでなく、すべての依存関係)。この状況に対する自動化されたソリューションはありますか?
前もって感謝します。
最初に、プロジェクトpom.xmlを微調整して、以下を追加した場合:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>localrepo</outputDirectory>
<useRepositoryLayout>true</useRepositoryLayout>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
mvn packageを実行すると、 localrepoディレクトリ内にリポジトリディレクトリ形式で依存関係のコピーが作成されます( dependency:copy-dependenciesのコマンドラインオプションを使用してみましたが、機能しませんでした)。おそらくもう必要ないので、 pom.xmlから上記をコメントアウトしてください。
Archivaを使用したことはありませんが、この時点で、localrepoリポジトリファイルをローカルWebサーバーにインストールし、それをミラーリングするようにArchivaサーバーを構成できると思います。
または、エンドユーザー向けに最小限の労力でインストールを作成したい場合(およびディストリビューションのサイズは問題ではありませんでした)、このlocalrepoディレクトリをディストリビューションに含め、pomに以下を追加してmavenにそのディレクトリへの参照を提供できます。 xml:
<repositories>
<repository>
<id>local-repo</id>
<name>local-repo</name>
<url>file://${basedir}/localrepo</url>
<releases>
<enabled>true</enabled>
<checksumPolicy>ignore</checksumPolicy>
<updatePolicy>always</updatePolicy>
</releases>
</repository>
</repositories>
このローカルリポジトリ手法は、パブリックMavenリポジトリにない自家製およびサードパーティのjarファイルを配布する場合に非常に役立ちます。パブリックリポジトリにあるライブラリはいつでも削除できます。
サードパーティのjarをインストールするために通常必要なmvninstall :install-file palaverをすべて説明しようとするよりも、Mavenの新規ユーザーを思いとどまらせるものは何もありません(ただし、Mavenについては熱心かもしれません)。