Я создал небольшой небольшой тестовый проект, чтобы посмотреть, решит ли Gradle эту проблему, которая у нас есть с Maven.У нас есть 200 небольших библиотек, все из них - проекты Maven. Когда вы делаете чистую проверку, вам нужно mvn install
каждая из них по отдельности
Чтобы смоделировать такой сценарий, я создал 4 модуля:
root
- jvaas-gson
- jvaas-jackson
- jvaas-json
- jvaas-provider
И jvaas-gson
, и jvaas-jackson
зависят от jvaas-json
и jvaas-provider
.jvaas-json
зависит только от jvaas-provider
.Если какое-то внешнее приложение хочет включить возможности JSON, оно должно включать только jvaas-gson
или jvaas-jackson
, который использует интерфейс в jvaas-json
(как я уже сказал, это всего лишь эксперимент с ним, фактический вариант использования будетотключить почтовых провайдеров, платежных систем и т. д., которым нужно только изменить строку в скрипте сборки Gradle)
В jvaas-provider
у меня есть settings.gradle.kts
rootProject.name = "jvaas-provider"
и build.gradle.kts
import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion
group = "io.jvaas"
version = "1.3.0"
plugins {
`maven-publish`
kotlin("jvm") version("1.3.10")
id("org.jetbrains.dokka") version "0.9.16"
}
repositories {
jcenter()
}
dependencies {
implementation(kotlin("stdlib", getKotlinPluginVersion()))
testImplementation("org.junit.jupiter:junit-jupiter-api:5.3.1")
}
publishing {
repositories {
mavenLocal()
}
}
В jvaas-json
я пытаюсь получить доступ к одному из классов в jvaas-provider
, поэтому я добавил его к settings.gradle.kts
rootProject.name = "jvaas-json"
include("jvaas-provider")
иbuild.gradle.kts
import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion
group = "io.jvaas"
version = "1.3.0"
plugins {
`maven-publish`
kotlin("jvm") version("1.3.10")
id("org.jetbrains.dokka") version "0.9.16"
}
repositories {
jcenter()
}
dependencies {
implementation(kotlin("stdlib", getKotlinPluginVersion()))
implementation(group = "io.jvaas", name = "jvaas-provider", version = "$version")
testImplementation("org.junit.jupiter:junit-jupiter-api:5.3.1")
}
Внутри jvaas-json
, я пытаюсь получить доступ к одному из классов, которые я создал внутри jvaas-provider
, но он не разрешается.
Без необходимости установки вручную jvaas-provider
в локальном репозитории Maven (mvn install
), возможно ли использовать его как зависимость внутри jvaas-json
?Если так, что я должен изменить в своих скриптах сборки Gradle и файлах настроек?