2016-08-11 8 views
1

javaアプリケーションをmavenに移行しようとしています。これまでにjarのファイルとして提供されていたいくつかの依存関係があります。これらの依存関係の1つが、Mavenのリポジトリから入手可能である、jung2です:mvnrepository.comMaven:pom型の依存関係をインポートするには?

私は提供すべてのモジュールを必要と私はすべての対応jarのファイルがダウンロードされるというのが私のpom.xmlなどで正しくこのdependecyを宣言する方法を理解していないとクラスはコンパイル時に使用できます。

これは私のpom.xmlファイルが今のように見えるものです:

<?xml version="1.0" encoding="UTF-8"?> 
<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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>groupId</groupId> 
    <artifactId>myProject</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <dependencyManagement> 
     <dependencies> 
      <!-- https://mvnrepository.com/artifact/net.sf.jung/jung2 --> 
      <dependency> 
       <groupId>net.sf.jung</groupId> 
       <artifactId>jung2</artifactId> 
       <version>2.0.1</version> 
       <type>pom</type> 
       <scope>import</scope> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 
</project> 

私も<scope>import</scope>を除外しようとしたとdependenciesセクションに依存性を置きます。 mvn compileまたはmvn packageを実行すると、対応するパッケージが存在しないというエラーメッセージが表示されます。

dependencydependenciesに追加し、dependencyManagementの外側に追加すると、

<dependencies> 
    <dependency> 
    <groupId>net.sf.jung</groupId> 
    <artifactId>jung2</artifactId> 
</dependency> 

バージョンが不足しているとのエラーが表示されます。しかし、私が理解する限り、これはdependencyManagementのために必要ではありませんか?私も<version>2.0.1</version>を追加する場合、私は、次のエラーメッセージが表示されます。

Failure to find net.sf.jung:jung2:jar:2.0.1

+0

これは ''セクションの中にあるので、 ''を追加してその外側に追加するか、それを依存関係管理から取り除く必要があります。 http://stackoverflow.com/questions/2619598/differences-between-dependencymanagement-and-dependencies-in-maven?rq=1 – Tunaki

+0

@ Tunaki回答をお寄せいただき、元の投稿を編集しました。依存関係を 'dependencyManager'の外に追加することはこれまでのところうまくいきませんでした。 – yogii

+0

はい、タイプを追加する必要があります(そして多分スコープ、わかりません)。 – Tunaki

答えて

1

あなたは(あなたが親と子の関係を持つことになります)Mavenのマルチモジュールプロジェクトを持っているとき、「dependencyManagement」タグは、一般的に使用されています。

「dependencyManagement」タグ内に依存関係を指定すると、NOTは実際に依存関係をダウンロードします。 このタグ内に依存関係を置くということは、単にこの依存関係が子のpomのために利用可能である(ダウンロードする)ことを意味します。子のpomはクラスをコンパイルするためにjarをダウンロードして使用するために、groupIdとartifactIdを明示的に提供する必要があります。

モジュールプロジェクトが1つだけの場合(あなたが1つのモジュールプロジェクトであるように見えます)、タグを使用しないことでこの問題を解決できます。 タグにジャーを入れるだけです。 EXのために

<dependencies> 
    <dependency> 
     <groupId>com.abc</groupId> 
     <artifactId>def</artifactId> 
     <version>1.0.0</version> 
     <type>pom</type>  // This will now download the pom and its associated transitive dependent jars 
    </dependency> 
    <dependency> 
     <groupId>com.pqr</groupId> 
     <artifactId>xyz</artifactId> 
     <version>1.0.0</version> 
     <type>pom</type> // This will now download the pom and its associated transitive dependent jars 
    </dependency> 
</dependencies> 

私はあなたがあなたのケースではありませんマルチモジュールプロジェクトを、持っている場合dependenciesManagementタグはほとんど使用する意味を行います、前に言ったように。

関連する問題