复制依赖排除一些配置(Copy dependencies excluding some config

2019-08-17 18:47发布

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

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配置。 我怎样才能做到这一点?

Answer 1:

与此有点痴迷,并试图找出如何做到这一点。 我得到了它与下列文件的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集成工作作为espected。



Answer 2:

只复制编译依赖(即未在所提供的依赖性集)到一个目录,这应该工作:

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

希望这可以帮助。



Answer 3:

看看还在providedCompile没有战争插件的问题。

还有的概念SpringSource的propdeps摇篮插件特色提供的配置支持。



文章来源: Copy dependencies excluding some configuration
标签: gradle