我建立了一个小小的测试项目,看看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
内部创建的类之一,但没有解决。
无需在本地Maven存储库(jvaas-provider
)中手动安装mvn install
,是否可以将其用作jvaas-json
内部的依赖项?如果是这样,我应该在Gradle构建脚本和设置文件中进行哪些更改?
答案 0 :(得分:0)
Kotlin Slack上的Paul刚刚在我可以在我的StackOverflow问题上点击Post之前回答了我的问题,因此以QA风格发布此消息,也许将来会对其他人有所帮助。
Gradle有一个名为composite builds的东西,它使您可以在项目中包含其他项目/库,而不必先将它们安装到本地Maven存储库中。
对于上面的示例,要使用复合构建,我要做的就是更改settings.gradle.kts
文件中的内容:
rootProject.name = "jvaas-json"
includeBuild("../jvaas-provider")