7

私は何かが欠けているに違いない。私は検索して検索し、遊んでいじくり回しましたが、Mavenで次のことを行う方法がまだわかりません:

アーティファクトとそのすべての依存関係 (および推移的な依存関係) を内部の Nexus サーバーからユーザー指定の場所にダウンロードしたいと考えています。ここでの考え方は、ソリューションを本番環境にデプロイする人が、必要なすべての jar ファイルを 1 か所で簡単に取得できるようにすることです。

dependency:get があり、これは close-but-no-cigar です。dependency:get を使用すると、すべてのアーティファクトが、各アーティファクトの groupId および artifactId に従ってディレクトリの下のローカル mvn リポジトリにダウンロードされます。これは私が望んでいることではありません. すべてのファイルを 1 つのディレクトリにダウンロードして、1 つの場所に配置したいと考えています。

次に、dependency:copy-dependencies があります。これもまた、私が望むほとんどのことを行います。すべてのアーティファクトの依存関係をターゲット/依存関係にコピーします。これには 2 つの問題があります。1) pom.xml が必要です。dependency:get のように任意の座標を指定することはできません。また、2) dependency:copy-dependencies はメインのアーティファクト自体をターゲット/依存関係にコピーしません。

これを行うにはもっと良い方法があるはずですが、他に解決策を探す場所がわかりません。要約すると、一連の Maven 座標 (groupId:artifactId:version) と内部の Nexus URL を誰かに提供し、1 つのコマンドですべてを選択したディレクトリにダウンロードできるようにしたいと考えています。

4

3 に答える 3

1

Maven アセンブリ プラグインを使用して、追加の「依存関係を含む jar」を、すべてを含む ZIP ファイルにパッケージ化します。

http://maven.apache.org/plugins/maven-assembly-plugin/descriptor-refs.html

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
  <!-- TODO: a jarjar format would be better -->
  <id>jar-with-dependencies</id>
  <formats>
    <format>jar</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <dependencySets>
    <dependencySet>
      <outputDirectory>/</outputDirectory>
      <useProjectArtifact>true</useProjectArtifact>
      <unpack>true</unpack>
      <scope>runtime</scope>
    </dependencySet>
  </dependencySets>
</assembly>

次に、ユーザーは<type>zip</type>、通常の「maven 座標」に加えて、すべての依存関係を含む zip ファイルを取得するように要求できます。

于 2011-03-02T00:11:39.353 に答える
0

「誰かにMaven座標のセットを与えたい」場合は、それらを特別なpom.xmlに入れるのが最善です(どこかに書き留める必要があります)。この pom は、「メイン アーティファクト」の pom ではありませんが、依存関係として「メイン アーティファクト」を持っています。pomこのプロジェクトではアーティファクト自体は作成されないため、パッケージの種類は次のようになります。

次に、dependency:copy-dependencies既に評価したソリューションを使用すると、必要なすべての依存関係が得られます。私見はエレガントでシンプルなソリューションです。私はよく知りません。

于 2011-02-28T21:09:37.300 に答える