我建立了一个小测试项目,看看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
中使用接口(interface)(如我所说,这只是在进行实验,实际用例是关闭电子邮件提供商,付款提供者等只需在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
内部创建的类之一,但未解决。不必在本地Maven存储库(
jvaas-provider
)中手动安装mvn install
,是否可以将其用作jvaas-json
内部的依赖项?如果是这样,我应该在Gradle构建脚本和设置文件中进行哪些更改? 最佳答案
在我可以在我的StackOverflow问题上点击Post之前,Kotlin Slack上的Paul刚刚回答了我的问题,因此将其发布为QA风格,也许会在将来对其他人有所帮助。
Gradle有一个叫做composite builds的东西,它允许您在项目中包含其他项目/库,而不必先将它们安装到本地Maven存储库中。
对于上面的示例,要使用复合构建,我要做的就是更改settings.gradle.kts
文件中的某些内容:
rootProject.name = "jvaas-json"
includeBuild("../jvaas-provider")
关于gradle - 如何构建Gradle构建以允许构建相互依赖的库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53373371/