2017-05-16 7 views
1

私は2つのプロジェクトAとBを持っています。ここでAはBに依存しています。BをBARとしてパッケージ化してMavenサーバー(artifactory)そのjarはpomファイルのプロジェクトAに対する通常の依存関係です。 BのjarファイルはプロジェクトAのMaven依存関係に表示されますが、プロジェクトBの依存関係は依存関係の階層には表示されません。 Bの依存関係のためにクラスが見つかりません例外を引き起こしています。Maven - Artifactoryにデプロイされたアーティファクトのための推移的な依存関係は解決されていません

しかし、私のプロジェクトAとBと同じEclipseワークスペースです。プロジェクトBを開くと、プロジェクトAはリモートリポジトリではなくワークスペースからプロジェクトBを参照し始め、すべてうまく機能します。

この質問 - Maven. Transitive dependenciesは私の問題に最も近いものでしたが、私のプロジェクトBの依存関係はオプションではありません。

ここで何が問題になりますか?私はMavenのクイックスタート原型を使用していたプロジェクト

<?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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.myapp</groupId> 
    <artifactId>core-app</artifactId> 
    <version>1.0.0-RELEASE</version> 
    <packaging>jar</packaging> 

    <name>core-app</name> 
    <url>http://maven.apache.org</url> 

    <dependencies> 
    <dependency> 
     <groupId>com.myapp</groupId> 
     <artifactId>utils</artifactId> 
     <version>1.0.0-RELEASE</version> 
    </dependency> 
    </dependencies> 
</project> 

ため

プロジェクトBのためのPOM

<?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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.myapp</groupId> 
    <artifactId>utils</artifactId> 
    <version>1.0.0-RELEASE</version> 
    <packaging>jar</packaging> 

    <name>utils</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

<!-- Following doesn't get added to project A --> 
    <dependencies> 
    <dependency> 
     <groupId>commons-io</groupId> 
     <artifactId>commons-io</artifactId> 
     <version>2.4</version> 
    </dependency> 
    </dependencies> 
</project> 

POM。私のプロジェクトのプロジェクトの構造は、(私はjarファイルとしてパッケージ化している)である:

project-name 
    src/main/java 
    src/test/java 
    pom.xml 
+1

あなたのお金は問題を理解するのに役立ちます。 – davidxxx

+0

アプリケーションを実行しているときにEclipse内でClassNotFoundExceptionを取得していますか?はいの場合、プロジェクトBはEclipseでプロジェクトAの依存関係を解決しており、Artifactoryから参照されていません。これを制御する「ワークスペース成果物の解決」というオプションがあります。 – Shinchan

+0

@davidxxxポムを更新しました。これは本当にこの段階で簡単です。 –

答えて

1

が正常に推移依存関係を解決するには、プロジェクトBのjarファイルとのpom.xmlは、Mavenのリポジトリにアクセスできる必要があります。アーティファクトをリモート・リポジトリーにデプロイする場合は、jarとpom.xmlの両方がデプロイされ、ダウンロード可能であることを確認してください。

必要なファイルをリモートリポジトリにデプロイした場合は、コマンドラインを使用してプロジェクトAをビルドします。ビルドMavenターゲットを指定して、すべての依存関係をローカルMavenリポジトリにダウンロードします。 mvn compileまたはmvn packageのようなもののダウンロードをトリガし、成功したプロジェクトA.一度

を構築し、プロジェクトBの瓶とのpom.xmlは、ローカルのMavenリポジトリにある、EclipseでMavenのプロジェクトを更新し、彼らが正しく依存関係を再構築し、解決します。

+0

ブレントありがとう!私は、jar自体の一部としてmavenリポジトリ(サーバ)上でアクセス可能なパッケージ化されたjarの一部としてpomをデプロイしています。私が調べる必要がある他のタイプのパッケージがありますか? –

+0

@AnmolGuptaあなたの意見に基づいて、あなたのプロジェクトのより簡潔な答えを更新しました。 –

関連する問題