Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to exclude dependencies from spring boot

I am using spring boot and following is my gradle file

    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')
}

while m adding in gradle file the following dependecy

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

its including bunch of other dependencies like hibernate n all that i don't need it for now(just wanted to use spring data jpa) which cause many other problem so how can i use only spring-data-jpa and its related dependency only ?

tried to disable like exclude = { HibernateJpaAutoConfiguration.class} but does't go well

Thnks in advance

like image 909
kiran rathod Avatar asked Sep 01 '25 05:09

kiran rathod


1 Answers

The simplest solution I guess would be just to include spring-data-jpa, not spring-boot-starter-data-jpa:

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

Or if you're really want to left starter, than you might try to do something like:

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

But understand this, in order to use spring-data-jpa you have to have a persistent provider like hibernate, just because spring-data-jpa itself is nothing more than an abstraction on top of JPA which in turn is an abstraction as well on top of persistent providers like hibernate or eclipselink.

Update

If you want to leave all jpa dependencies in gradle build script, but don't want spring-boot to use them for a while, then you have to disable both DataSourceAutoConfiguration and HibernateJpaAutoConfiguration as well.

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
like image 116
Bohdan Levchenko Avatar answered Sep 02 '25 17:09

Bohdan Levchenko