2017-11-30 37 views
0

私のプロジェクトソースと共に配布されている "lib /"ディレクトリにあるサードパーティのjarに依存するmavenプロジェクトを展開したいと思います。依存関係が解決される前に、mavenでサードパーティの依存関係をインストールしてください

inotheranswersを説明したように)これを行うための通常の方法では、ユーザは、シェルで次のようなコマンドmvn install:install-fileを入力して、プロジェクトをビルドする前に、ローカルのMavenリポジトリにjarファイルをインストールすることです。

(ただし、ユーザーが手動で依存関係をインストールするためには、というように、1998 ...)を展開することはできません。だから私は、私はinstall-file目標を指定しようと思いました私のpom.xml

<dependency> 
    <groupId>edu.my.id</groupId> 
    <artifactId>myartifact</artifactId> 
    <version>1.0</version> 
</dependency> 

...

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-install-plugin</artifactId> 
<version>2.5.2</version> 
<executions> 
    <execution> 
    <id>install-jar-lib</id> 
    <phase>validate</phase> 
    <goals> 
     <goal>install-file</goal> 
    </goals> 
    <configuration> 
     <groupId>edu.my.id</groupId> 
     <artifactId>myartifact</artifactId> 
     <version>1.0</version> 
     <packaging>jar</packaging> 
     <file>${project.basedir}/lib/myartifact.jar</file> 
     <generatePom>true</generatePom> 
    </configuration> 
    </execution> 
</executions> 

問題は、Mavenのは、ときにも、install-file実行する前に、依存関係を解決しようとするものです私はvalidateフェーズの早い段階で実行するよう指定します。したがって、それは依存関係を見つけることができないと不平を言う。

この質問はaskedbeforeされている、といくつかの不快な複雑なソリューションが提供されているこれらのような:

  1. 実行maven-install-pluginclean相中およびアーティファクトを構築する前mvn cleanを実行するために、ユーザーが必要になります。
  2. hereのように、複数のモジュールを設定します。
  3. <systemPath>を使用して、システムライブラリとしてjarをロードします。 (システムライブラリを無視して、デプロイされたアプリケーションディレクトリにmaven-dependency-pluginを使用して依存関係のjarファイルをコピーしているため、これは私の要件を満たしていません)。
  4. カスタムプラグインを作成します。

これらのどれも私を満たしていません。これはビルドシステムが遭遇するルーチンタスクのようです。依存関係をMavenにインストールするには、より簡単な方法が必要です。私のために働いた

答えて

0

ソリューションは、両方のinstall-file<systemPath>を使用することでした。

<dependency> 
    <groupId>edu.my.id</groupId> 
    <artifactId>myartifact</artifactId> 
    <version>1.0</version> 
    <scope>system</scope> 
    <systemPath>${project.basedir}/lib/myartifact.jar</systemPath> 
</dependency> 

...

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-install-plugin</artifactId> 
<version>2.5.2</version> 
<executions> 
    <execution> 
    <id>install-jar-lib</id> 
    <phase>validate</phase> 
    <goals> 
     <goal>install-file</goal> 
    </goals> 
    <configuration> 
     <groupId>edu.my.id</groupId> 
     <artifactId>myartifact</artifactId> 
     <version>1.0</version> 
     <packaging>jar</packaging> 
     <file>${project.basedir}/lib/myartifact.jar</file> 
     <generatePom>true</generatePom> 
    </configuration> 
    </execution> 
</executions> 

この方法でMavenのプロジェクトをコンパイルするとき、それはシステムライブラリとしてサードパーティの依存関係を解決します。また、ライブラリをローカルMavenリポジトリにインストールするので、maven-dependency-plugincopy-dependenciesゴールが見つかります。

関連する問題