kiran rathod
kiran rathod

Reputation: 173

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

Upvotes: 4

Views: 15540

Answers (3)

Arsensys
Arsensys

Reputation: 1

If you are using STS with Gradle and removed (for example) the JPA dependency, just:

  1. Right click your project in Package Explorer.
  2. Open the Gradle option and select Refresh Gradle Project.

Upvotes: 0

Bohdan Levchenko
Bohdan Levchenko

Reputation: 3561

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

Upvotes: 11

Monzurul Shimul
Monzurul Shimul

Reputation: 8396

You need to follow this convention to exclude yours dependencies.

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

Another way is:

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

Upvotes: 1

Related Questions