如何从spring boot中排除依赖项

时间:2017-06-09 09:54:32

标签: spring hibernate gradle spring-boot spring-data-jpa

我正在使用spring boot,以下是我的gradle文件

    buildscript {
    ext {
        springBootVersion = '2.0.0.BUILD-SNAPSHOT'
    }
    repositories {
        mavenCentral()
        maven { url "https://repo.spring.io/snapshot" }
        maven { url "https://repo.spring.io/milestone" }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse-wtp'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'war'

version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
    mavenCentral()
    maven { url "https://repo.spring.io/snapshot" }
    maven { url "https://repo.spring.io/milestone" }
}

configurations {
    providedRuntime
}

dependencies {
    compile('org.springframework.boot:spring-boot-starter-data-jpa:1.2.1.RELEASE')
    compile('org.springframework.boot:spring-boot-starter-web')
    compile("com.h2database:h2")
    providedRuntime('org.springframework.boot:spring-boot-starter-tomcat')
    testCompile('org.springframework.boot:spring-boot-starter-test')
}

当我在gradle文件中添加以下依赖

org.springframework.boot:spring-boot-starter-data-jpa:1.2.1.RELEASE

它包括许多其他依赖项,如hibernate n,我现在不需要它(只是想使用spring数据jpa)导致许多其他问题 那我怎么才能只使用spring-data-jpa及其相关的依赖呢?

试图像exclude = {HibernateJpaAutoConfiguration.class}一样禁用但是不顺利

事先提前

3 个答案:

答案 0 :(得分:6)

我想最简单的解决方案就是包含spring-data-jpa,而不是spring-boot-starter-data-jpa

compile('org.springframework.data:spring-data-jpa:2.0.0.M2')

或者,如果你真的想要离开首发,那么你可能会尝试做类似的事情:

compile('org.springframework.boot:spring-boot-starter-data-jpa') {
    exclude(module: 'hibernate-core')
    exclude(module: 'hibernate-entitymanager')
}

但要明白这一点,为了使用spring-data-jpa,你必须拥有像hibernate这样的持久性提供者,因为spring-data-jpa本身只不过是{{1}之上的抽象。反过来又是一个抽象,也是JPAhibernate之类的持久性提供者。

<强>更新

如果您想将所有jpa依赖项保留在gradle构建脚本中,但不希望eclipselink暂时使用它们,那么您必须同时禁用spring-boot和{{1同样。

DataSourceAutoConfiguration

答案 1 :(得分:1)

您需要遵循此约定来排除您的依赖关系。

compile('org.springframework.boot:spring-boot-starter-data-jpa:1.2.1.RELEASE') {
    exclude module: 'hibernate-core'
}

另一种方式是:

configurations {
  compile.exclude module: 'hibernate-core'
}

答案 2 :(得分:0)

如果您在 Gradle 中使用 STS 并删除(例如)JPA 依赖项,只需:

  1. 包资源管理器中右键单击您的项目。
  2. 打开 Gradle 选项并选择刷新 Gradle 项目