gradle'exclude'本地'filetree'的可传递依赖关系

iqih9akk  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(1627)

出于一些奇怪的原因,我在gradle类路径中使用了基于本地filetree的jar。
从子模块(项目)中,我想排除一个本地jar。但是我缺少它的语法,有人能给我提供正确的语法来排除本地jar文件作为一个可传递的依赖关系吗?

dependencies {
    implementation(project(":my-simple-project")) {
        exclude fileTree(dir: "../lib/", include: ["axis2-1.7.8/axis2-transport-http-1.7.8.jar"])
    }
   }

dependencies {
    implementation(project(":my-simple-project")) {
        exclude files("../lib/axis2-1.7.8/axis2-transport-http-1.7.8.jar"])
    }
   }

我犯了个错误


* What went wrong:

A problem occurred evaluating project ':my-simple-project'.
> Could not find method exclude() for arguments [directory '../lib/'] on DefaultProjectDependency{dependencyProject='project ':my-simple-project'', configuration='default'} of type org.gradle.api.internal.artifacts.dependencies.DefaultProjectDependency.
fafcakar

fafcakar1#

可以使用以下语法排除嵌套的jar:

fileTree(dir: 'lib').exclude {details ->
    (details.file.canonicalPath.contains("axis2-1.7.8")
            && details.file.canonicalPath.contains('axis2-transport-http-1.7.8'))}

fileTree(dir: 'lib').exclude { details ->
        details.file.text.contains('axis2-transport-http')
}

引用:gradle filetree排除除某些目录以外的所有目录

vvppvyoh

vvppvyoh2#

只能排除模块依赖项,不能排除文件依赖项。
如果无法从公共存储库(如maven central或jcenter)解析依赖关系,则可以创建本地maven存储库(甚至在项目结构中),并直接从此处解析文件:

repositories {
    maven {
        url uri("${projectDir}/lib")
    }
}

dependencies {
    implementation 'org.apache.axis2:axis2-transport-http:1.7.8'
}

请注意,您必须修改 lib 文件夹以匹配maven目录结构(或者使用自定义结构定义ivy存储库)。

相关问题