web-dev-qa-db-ja.com

複数のサードパーティの商用ライブラリをインストールするためのMaven POMファイル

一連の商用サードパーティライブラリに依存しているプロジェクトがたくさんあります。現在、会社のリポジトリはないので、自分のローカルリポジトリにライブラリをインストールする必要があります。

各ファイルに対してmvn install:installFile -Dpackaging=jar -Dfile=<file> -DgroupId=<groupId> -DartifactId=<artifactId> -Dversion=<version>を実行するのはかなり面倒です。 batファイルを作成できますが、mavenを使用してこれを行う方法はありますか?

すべてのjarのプロジェクトと、すべてのグループID、アーティファクトID、バージョン、ファイル名を含む単一のpomファイルを考え、そのプロジェクトでmvn installを実行するか、それらの行に沿って何かを実行する可能性を考えています。

このようなことは可能ですか?


注:私はMaven 3を使用していますが、Maven 2互換のソリューションもいいでしょう

19
Svish

最近これに対する新しい解決策を発見しました。基本的に、プロジェクト内にローカルレポジトリを作成できます。これは、残りのソースコードと一緒にチェックインできます。ここでそれについてブログに書いた: http://www.geekality.net/?p=2376

要点は、依存関係をプロジェクト内のフォルダーにデプロイすることです。

mvn deploy:deploy-file
    -Durl=file:///dev/project/repo/
    -Dfile=somelib-1.0.jar
    -DgroupId=com.example
    -DartifactId=somelib
    -Dpackaging=jar
    -Dversion=1.0

そして、Mavenにそれを知らせ、pom.xmlを介して通常どおり依存関係宣言を使用します。

<repositories>
    <repository>
        <id>project.local</id>
        <name>project</name>
        <url>file:${project.basedir}/repo</url>
    </repository>
</repositories>

<dependency>
    <groupId>com.example</groupId>
    <artifactId>somelib</artifactId>
    <version>1.0</version>
</dependency>

極端にMaven'yではありませんが、それは機能し、依存関係を後で会社のリポジトリに移動することは非常に簡単です。

12
Svish

Mavenインストールプラグインの install-file ゴールを複数回実行してpom.xmlを作成するだけです。それらのファイルがすでにローカルでどこかで利用可能であると仮定します(またはそれらをダウンロードできます Wagonプラグインを使用して )。

  <project>
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.somegroup</groupId>
    <artifactId>my-project</artifactId>
    <version>1.0</version>

    <build>
      <plugins>
        <plugin>
          <groupId>org.Apache.maven.plugins</groupId>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.4</version/>
          <executions>
            <execution>
              <id>install1</id>
              <phase>package</phase>
              <goals>
                <goal>install-file</goal>
              </goals>
              <configuration>
                <file>lib/your-artifact-1.0.jar</file>
                <groupId>org.some.group</groupId>
                <artifactId>your-artifact</artifactId>
                <version>1.0</version>
                ... other properties
              </configuration>
            </execution>
            <execution>
              <id>install2</id>
              <phase>package</phase>
              <goals>
                <goal>install-file</goal>
              </goals>
              ... etc

            </execution>
            ... other executions
          </executions>
        </plugin>
      </plugins>
    </build>
  </project>

したがって、上記のpomフラグメントmvn packageトリックを行う必要があります。

良い Maven POMチュートリアルPOMリファレンス があります。

41
Eugene Kuleshov