3

次のようなプロジェクトレイアウトを想定します。

allprojects {
    apply plugin: "java"

    configurations {
        provided
        compile.extendsFrom(provided)
    }
}

project("a") {
    dependencies {
        compile("foo:bar:1.0")
        ...
        provided("bar:baz:3.14")
        ...
    }
}

project("b") {
    dependencies {
        compile("abc:def:1.0")
        ...
        provided("xyz:foo:3.14")
        ...
    }
}

dependencies {
    compile(project(":a"))
    compile(project(":b"))
}

ここで、ルートプロジェクトのすべての依存関係を(推移的に)あるディレクトリにコピーするタスクが必要ですが、構成は除きprovidedます。これどうやってするの?

4

3 に答える 3

8

コンパイルの依存関係(提供されている依存関係セットにない)のみをディレクトリにコピーするには、次のように機能する必要があります。

task copyDependencies(type:Copy) {
    from (configurations.compile - configurations.provided)
    into 'build/dependencies'
}

お役に立てれば。

于 2013-03-19T22:10:25.857 に答える
4

これに少し夢中になって、それを行う方法を理解しようとしました。次のgradleファイルで動作するようになりました。構成の部分と、依存関係をコピーする場所に注意してください。

allprojects {
    apply plugin: "java"

    configurations {
        provided
    }

    sourceSets {
        main { 
            compileClasspath += configurations.provided 
        }
    }

    repositories {
        mavenCentral()
    }
}

project("a") {
    dependencies {
        compile("jdom:jdom:1.0")
        provided("javax.servlet:servlet-api:2.5")
    }
}

project("b") {
    dependencies {
        compile("javax.jcr:jcr:2.0")
        provided("commons-logging:commons-logging:1.0")
    }
}

dependencies {
    compile(project(":a"))
    compile(project(":b"))
}

task copyDependencies(type:Copy) {
    from configurations.compile
    into 'build/dependencies'
}

私はそれがこの問題のより簡単な解決策だと思いますが、それを理解しませんでした。しかし、これは機能します。唯一のことは、ide統合を期待どおりに機能させるには、提供された構成をidea/Eclipseクラスパスにも追加する必要があるということです。

于 2013-03-22T08:01:18.627 に答える
0

戦争プラグインの質問なしでprovidedCompileも見てください。

提供された構成サポートを特徴とするSpringSourcepropdepsGradleプラグインの概念があります。

于 2013-10-10T13:58:52.297 に答える