我建立了一个小测试项目,看看Gradle是否可以解决我们目前在Maven中遇到的问题。我们有200个小图书馆,所有的小图书馆都是Maven项目,每当您进行完结帐时,都必须分别对每个小图书馆进行mvn install
为了模拟这种情况,我创建了4个模块:

root
 - jvaas-gson
 - jvaas-jackson
 - jvaas-json
 - jvaas-provider
jvaas-gsonjvaas-jackson都取决于jvaas-jsonjvaas-providerjvaas-json仅取决于jvaas-provider
如果某些外部应用程序希望包含JSON功能,则只需包含jvaas-gsonjvaas-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/

10-09 07:06