如何在Gradle中复制一些依赖项jar

时间:2017-01-02 21:38:51

标签: gradle

让我们说我在Gradle中有这种依赖性:

   providedCompile(
        'javax:javaee-api:7.0',
        'org.slf4j:slf4j-api:1.7.21',
        'com.fasterxml.jackson.core:jackson-databind:2.5.4',
        'com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.5.4',
        'net.sf.ehcache:ehcache:2.10.3',
        'com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.5.4',
 )

(我使用war插件中的providedCompile作为ai)

我有编译时间,但是在构建完所有内容之后,我需要将一些(不是全部)依赖项中使用的jar复制到几个目录中,将它们配置为Liberty Server中的Libraries,之后我创建一个Docker。例如,我需要排除ehcache jar,因为它们是应用服务器中持久性引擎的一部分。

我试过了:

task copyRuntimeLibs(type: Copy) {
    from (configurations. providedCompile - 'net.sf.ehcache:ehcache:2.10.3')
    into "build/docker/dependenciesLibrary"
}

但它不会奏效。来自ehcache的罐子仍然被复制。

如何在Gradle中创建一个复制任务,例如,从那些jackson依赖项中获取jar(但不能复制javaee-api)

感谢

1 个答案:

答案 0 :(得分:3)

你可以尝试

task copyRuntimeLibs(type: Copy) {
    from (configurations.providedCompile){
        exclude 'ehcache-2.10.3.jar'
    }
    into "build/docker/dependenciesLibrary"
 }

以及

task copyRuntimeLibs(type: Copy) {
    from (configurations.providedCompile){
        exclude 'ehcache*.jar'
    }
    into "build/docker/dependenciesLibrary"
}

两者都可以正常使用,

但实际上我不知道是否有办法使用' net.sf.ehcache:ehcache:2.10.3' 直接而不是使用' ehcache-2.10.3.jar' 排除' ehcache * .jar'