Кастомный Spring Boot Starter не подтягивает нужные зависимости в используемом проекте

Вводные:

Есть кастомный spring-boot стартер на авторизацию, без @SpringBootApplication класса, с классом @AutoConfiguration. В нем объявлено несколько зависимостей (напр. spring-boot-starter-security и др.). Собирается через gradle в .jar файл, публикуется в нексусе.

Другое веб-приложение с бизнес-логикой подключает данный стартер как зависимость в build.gradle файле.

Проблема:

Если в веб-приложении оставить только две зависимости на веб и стартер

implementation "org.springframework.boot:spring-boot-starter-web"
implementation "ru.example:auth-proxy-starter:1.0.1"  

То при запуске Main класса будет ошибка - ClassNotFound для какой-нибудь из библиотек, используемых стартером (напр. из spring-security).

Одно из решений которое я вижу (и сейчас отражено в build.gradle файлах) - добавлять все зависимости, которые использует стартер в build.gradle веб-приложение, но это плохой вариант, т.к. например в новой версии стартера потребуется еще одна библиотека, а она не учтена в основном приложении. А также некоторые классы конфигураций спринга и конфигурация из стартера конфликтуют друг с другом.

Я думал, раз есть dependencyManagement секция, то она должна отвечать за то какие библиотеки подтягивать. Но видимо это не совсем так работает? (build.gradle файлы описал ниже)

auth-proxy-starter build.gradle:

plugins {
    id 'java'
    id 'org.springframework.boot' version '2.7.18'
    id 'io.spring.dependency-management' version '1.1.4'
}
configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}
dependencies {
    implementation "org.springframework.boot:spring-boot-starter-security"
    implementation "org.springframework.boot:spring-boot-starter-actuator"
    implementation "org.springframework.boot:spring-boot-starter-web"

    implementation "org.apache.commons:commons-lang3:3.10"

    implementation "io.jsonwebtoken:jjwt:0.9.1"
    implementation "jakarta.xml.bind:jakarta.xml.bind-api:2.3.3"
    implementation "org.glassfish.jaxb:jaxb-runtime:2.3.3"

    implementation "io.github.openfeign:feign-jackson:13.2.1"

    compileOnly "org.projectlombok:lombok"

    annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"
    annotationProcessor "org.projectlombok:lombok"

    testImplementation "org.springframework.boot:spring-boot-starter-test"
}

build.gradle веб-приложения

plugins {
    id 'java'
    id 'org.springframework.boot' version '2.7.18'
    id 'io.spring.dependency-management' version '1.1.4'
}
dependencies {
    implementation "ru.example:auth-proxy-starter:1.0.1"

    implementation "org.springframework.boot:spring-boot-starter-security"
    implementation "org.springframework.boot:spring-boot-starter-actuator"
    implementation "org.springframework.boot:spring-boot-starter-web"

    implementation "org.apache.commons:commons-lang3:3.10"

    implementation "io.jsonwebtoken:jjwt:0.9.1"
    implementation "jakarta.xml.bind:jakarta.xml.bind-api:2.3.3"
    implementation "org.glassfish.jaxb:jaxb-runtime:2.3.3"

    implementation "io.github.openfeign:feign-jackson:13.2.1"

    compileOnly "org.projectlombok:lombok"

    annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"
    annotationProcessor "org.projectlombok:lombok"

    testImplementation "org.springframework.boot:spring-boot-starter-test"
}

Ответы (1 шт):

Автор решения: Revasha

Решил заменой плагина 'java' на 'java-library' и заменой implementation в зависимостях на api

api("org.springframework.boot:spring-boot-starter-security")
api("org.springframework.boot:spring-boot-starter-actuator")
api("org.springframework.boot:spring-boot-starter-web")
→ Ссылка