2017-02-21 27 views
0

私はコンパイル時に、3つのlogbackアーティファクト(logback-コード、logback-古典、logback-の拡張機能)これらはすべてcompileで宣言されGradleの依存性管理

に依存し、jarファイルを構築しています範囲。

私のjarはビルドしますが、別のプロジェクトで使用しようとすると、3つのログバックの依存関係をもう一度指定する必要があります。そうしないと、クラスが見つかりません。私は私の瓶に依存していることを宣言することによって、これらの依存関係が達成されることを期待していました。

私は、スケッチを理解しているだけの既存のスクリプトを使って作業を進めています。 jarファイルをビルドするプロジェクトで

EDIT - Added some details of the dependency config

、依存関係が

compile group: 'ch.qos.logback',name: 'logback-classic', version: '1.2.1' compile group: 'ch.qos.logback',name: 'logback-core', version: '1.2.1' compile group: 'org.logback-extensions',name: 'logback-ext-spring', version: '0.1.4'

私は農産物が「その他」のプロジェクトの依存関係などで宣言されているjarファイルを次のように宣言されています compile group: 'mygroup',name: 'mylogback', version: '1.0.0-SNAPSHOT'

この依存関係はローカルのMavenリポジトリから取得されますが、ログバックの依存関係はnexから取得されます私たちはレポ。

Further Edit 他のプロジェクトの依存関係ツリーは、プロジェクトがそれとその依存関係を持っていないことを、私の見解を支持するように見えることになるこれを、持っている....

> | +--- commons-io:commons-io:2.5 | \--- 
> commons-collections:commons-collections:3.2.2 
> +--- mygroup:mylogback:1.0.0-SNAPSHOT 
> +--- ch.qos.logback:logback-classic:1.2.1 | +--- ch.qos.logback:logback-core:1.2.1 | \--- org.slf4j:slf4j-api:1.7.22 
> +--- ch.qos.logback:logback-core:1.2.1 
> +--- org.logback-extensions:logback-ext-spring:0.1.4 | \--- ch.qos.logback:logback-classic:1.1.1 -> 1.2.1 (*) 

Resolution

私自身の質問に答えるには、問題は

  • です。 maven-publishプラグインが私のビルドスクリプトにありません
  • ひどく形成されたpublishingタスクartefact:jarを公開しました。これをfrom components.javaに変更しました
+0

依存関係を宣言する方法を示してください。私は彼らがローカルファイルベースの依存関係ではなく、Maven/Ivyの依存関係ではないと感じています –

+0

@ LanceJava:あなたが見たいと思っていたことを望む詳細をいくつか追加しました – DaveH

+0

gradleはlogbackを認識しませんあなたのプロジェクトの推移的な依存性。私は今これをgradleで行うことは知らない。おそらく、プロジェクトにpomファイルを追加して、ログバックを実行時の整合性として識別します。私はgradleがmaven pomファイルを認識したと信じています。 – DwB

答えて

1

問題がアファファクトの展開にあると感じました。なぜなら、問題なくコンパイルできるからです。

デプロイメント/アップロードの定義が、対象となるアーティファクトリポジトリと同じ形式になっていることを確認してください。これを確認するには、pomファイル(または定義に応じてivyファイル)の保存先フォルダを探して、詳細が正しい形式で格納されていることを確認します。

定義は次のようになっていますか? :

apply plugin: 'maven' 

uploadArchives { 
    repositories { 
     mavenDeployer { 
      repository(url: "file://localhost/tmp/myRepo/") 
     } 
    } 
} 

は、すべてのサブプロジェクトへの依存関係を適用しますGradle documentation on dependency management

0

で見つけることができます依存関係の解決や一般的なパターンのGradle documentation on publishingとよりで読み取ることができ出版に関する詳細The Gradle documentation on maven plugin

で詳細を参照してください。 。

subprojects { 
    dependencies { 
     // ... 
    } 
} 

特定のプロジェクトを選択して設定を適用するためのAPIもあります。

configure([project(":a"), project(":b"), project(":c")]) { 
    dependencies { 
     // ... 
    } 
} 

configure(subprojects.findAll { it.name.startsWith("prefix") }) { 
    dependencies { 
     // ... 
    } 
} 

また、推移的な依存関係を有効にするには、gradleを使用してプロジェクト間の依存関係を追加する必要があります。

dependencies { 
    compile project(":toolbox") 
} 
関連する問題