2017-11-02 4 views
1

私は他のプロジェクトで使用するためにローカルリポジトリにインストールする必要のあるライブラリを作成しました。mvn installはインストールされたjarの依存関係を提供しませんか?

私はをプロジェクトbasedirで試しました。私はmaven-install-pluginを試してみた

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-install-plugin</artifactId> 
    <version>2.3.1</version> 
    <configuration> 
     <groupId>somegroup</groupId> 
     <artifactId>someartifact</artifactId> 
     <version>1.0</version> 
     <packaging>jar</packaging> 
     <file>${basedir}/target/someartifact.jar</file> 
     <generatePom>true</generatePom> 
    </configuration> 
    <executions> 
     <execution> 
     <id>install-jar-lib</id> 
     <goals> 
      <goal>install-file</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 

jarファイルが正しくインストールされているが、私は別のプロジェクトに依存

<dependency> 
    <groupId>somegroup</groupId> 
    <artifactId>someartifact</artifactId> 
    <version>1.0</version> 
</dependency> 

を追加したときに、それが遷移の依存性を示すことなく、記載されているいます。

遷移した依存関係のためにNoClassDefFoundErrorで失敗したプロジェクトテストを実行すると問題が発生します。

これを修正するにはどうすればよいですか?

EDIT:

親プロジェクトのPOM:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>somegroup</groupId> 
    <artifactId>parentartifact</artifactId> 
    <packaging>jar</packaging> 
    <version>1.0</version> 
    <dependencies> 
      <dependency> 
       <groupId>thirdpartygroup</groupId> 
       <artifactId>missingartifact</artifactId> 
       <version>x.x.x</version> 
      </dependency> 
    </dependencies> 
    <build> 
     <defaultGoal>compile</defaultGoal> 
     <sourceDirectory> 
      ${project.basedir}/src/main/java 
     </sourceDirectory> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.1</version> 
       <configuration> 
        <verbose>false</verbose> 
        <debug>false</debug> 
        <source>1.6</source> 
        <target>1.6</target> 
       </configuration> 
      </plugin> 

     </plugins> 
     <resources> 
      <resource> 
       <directory>src/main/resources</directory> 
       <includes> 
        <include>**/*</include> 
       </includes> 
      </resource> 
     </resources> 
     <finalName>parentartifact</finalName> 
    </build> 
    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 
</project> 

子プロジェクトのPOM:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>somegroup</groupId> 
    <artifactId>someartifact</artifactId> 
    <packaging>jar</packaging> 
    <version>1.0</version> 
    <dependencies> 
    <dependency> 
     <groupId>somegroup</groupId> 
     <artifactId>parentartifact</artifactId> 
     <version>1.0</version> 
    </dependency> 
    </dependencies> 

    <build> 
     <defaultGoal>compile</defaultGoal> 
     <directory>target</directory> 
     <finalName>${artifactId}-${version}</finalName> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.1</version> 
       <configuration> 
        <verbose>false</verbose> 
        <debug>false</debug> 
        <source>1.6</source> 
        <target>1.6</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 
</project> 
+0

archivaやnexusなどの中央リポジトリを使用しましたか? –

+0

いいえ、私はローカルでのみ –

+0

あなたの基本プロジェクトで 'mvn clean install'を実行すると、あなたの' your_maven_repo/somegroup/someartifact/1.0/'フォルダにjarが見つかりましたか? –

答えて

1

install-file目標は、ローカルリポジトリに外部jarファイルをインストールするためのものです。これは、Mavenでビルドされたプロジェクトで生成された成果物をインストールするために使用されることを意味するものではありません。このようなプロジェクトは、maven-install-pluginのinstallゴールでインストールする必要があります。この目標は、依存関係を定義するプロジェクトのpomを、リポジトリ内のアーティファクトとともに自動的にインストールします。

また、pomにinstall-pluginを設定する必要がないという利点があります。そのビルドの常に部分。単にあなたのpomにmaven-install-pluginを設定しないでmvn installを呼び出すだけで動作します。

+0

これは 'install'や' install-file'ゴールのいずれかでアーティファクトを正確にインストールしますが、pomにリストされている依存関係は利用できません。 –

関連する問題