复制依赖项,不包括某些配置

时间:2013-03-19 18:08:02

标签: gradle

假设一个像这样的项目布局:

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配置。我怎么能这样做?

3 个答案:

答案 0 :(得分:8)

要仅将编译依赖项(不在提供的依赖项集中)复制到目录,这应该有效:

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

希望这有帮助。

答案 1 :(得分: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'
}

我认为这是解决这个问题的一个更简单的方法,但是没有弄明白。但这一个有效。唯一的事情是你必须将所提供的配置添加到idea / eclipse类路径中,以使ide集成按预期工作。

答案 2 :(得分:0)

另请查看providedCompile without war plugin问题。

SpringSource propdeps Gradle plugin概念提供配置支持。