私はいくつかのプロジェクトを熟考しています。
これらのプロジェクトはすべていくつかのライブラリに依存しており、それらのほとんどはMavenリポジトリで利用できます。他のライブラリについては、Mavenアーティファクトを作成したいので、依存関係として使用できます。問題は、これらのライブラリのjarファイルしかないことです。
既存のjarファイルからアーティファクトを作成する最良の方法は何ですか?
remoteリポジトリを使用していない場合(これは個人開発の一般的な状況です)、単にinstall
install:install-file
mojoを使用して、localリポジトリ内のこれらのアーティファクト:
mvn install:install-file
-Dfile=<path-to-file>
-DgroupId=<group-id>
-DartifactId=<artifact-id>
-Dversion=<version>
-Dpackaging=<packaging>
-DgeneratePom=true
Where: <path-to-file> the path to the file to load
<group-id> the group that the file should be registered under
<artifact-id> the artifact name for the file
<version> the version of the file
<packaging> the packaging of the file e.g. jar
しかし、明らかに、これはビルドを移植不可能にします(ただし、これは問題ではないかもしれません)。移植性を犠牲にしないために、リモートリポジトリでアーティファクトを利用できるようにする必要があります。企業のコンテキストでは、これに対処する一般的な方法は、エンタープライズリポジトリをインストールすることです(その場合、実際にアーティファクトをdeploy
にインストールします)。
更新:アーティファクトがローカルリポジトリにインストールされたら、他の依存関係と同様に、pomで<dependency>
要素を宣言するだけです。例:
<dependency>
<groupId>aGroupId</groupId>
<artifactId>aArtifactId</artifactId>
<version>1.0.12a</version>
<packaging>jar</packaging>
</dependency>
Maven Deploy Plugin を使用して、JARファイル(およびオプションでPOMファイルですが、デフォルトで作成されます)をMavenリポジトリにアップロードできます。
プロジェクト内のリポジトリにないjarに「システム」依存関係を作成することもできます。例えば、
<dependency>
<groupId>com.example</groupId>
<artifactId>MySpecialLib</artifactId>
<version>1.2</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/MySpecialLib-1.2.jar</systemPath>
</dependency>
danbenが言った のように、これらのjarをリポジトリーにデプロイする必要があります。しかし、あなたの質問から、グローバルmaven以外のリポジトリがないことを理解しているようです。
Nexus 、または Artifactory を使用できます。
私はあなたの問題を知っています。 jarをmavenizeするのは面倒なことがあります(特に、さらに推移的な依存関係があり、pom.xmlで定義する必要がある場合)。
これらのライブラリーが本当にmaven depsとして存在しないかどうかを確認しましたか?通常の容疑者を見てください:
Nexus jarアップロードダイアログを使用してpom.xmlファイルを作成したい場合があります。