首页 文章

在build.gradle文件中排除传递依赖项时构建项目时出错

提问于
浏览
3

我正在使用Spring Boot创建一个多模块项目,用于部署我的应用程序并使用gradle作为我的构建工具 .

现在,我正在为项目中的某些模块创建独立部署 . 一些项目需要嵌入式tomcat,有些则不需要 . 所有常见的依赖项都放在一个共同的项目中,所有其他模块都依赖于这个共同的项目 .

大多数其他部署模块需要嵌入式tomcat应用程序服务器和其他Web组件(由org.springframework.boot'提供,名称:'spring-boot-starter-web),因此这已包含在build.gradle中以用于公共项目

这是常见项目的build.gradle:

compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: springBootVersion
compile group: 'org.springframework.boot', name: 'spring-boot-starter-actuator', version: springBootVersion
compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa', version: springBootVersion
compile group: 'org.springframework.data', name: 'spring-data-jpa', version: springDataJpaVersion

现在,将要独立部署的其他模块之一不需要这个嵌入式tomcat和其他包含spring-boot-starter-web的mvc jar,但需要来自普通项目的其他传递依赖项 . 因此,我想排除传递依赖

compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: springBootVersion

我在build.gradle其他项目中这样做

dependencies {
    compile project(':common') {
        exclude group 'org.springframework.boot', module:'spring-boot-starter-web'
    }
}

但是在构建它时会抛出这个错误:

启动失败:构建文件'/Users/user1/Documents/repo/storm/build.gradle':30:期待'}',找到','@第30行,第44列.oup'org.springframework.boot',模块:”

将其更改为:

dependencies {
    compile project(':common'){
        exclude group 'org.springframework.boot:spring-boot-starter-web'
    }
}

抛出:

无法在项目':common'上找到参数[parent-project name]的方法exclude() .

如何在此处排除传递依赖?

1 回答

  • 3

    您需要在 compile 上调用 exclude 而不是 project

    dependencies {
       compile(project(':common')) {
           exclude group: 'org.springframework.boot', module:'spring-boot-starter-web'
       }
    }
    

相关问题