我试图了解如何在 gradle 中创建依赖项,以便可以在我搜索过但无法完全理解其工作原理的多个项目之间共享其代码
我正在使用 Kotlin 和 Gradle,我的理解是最好的方法(我也喜欢的方法)是创建一个单独的项目来创建一个 jar,然后我可以导入它(我可以稍后将其上传到 nexus)
项目A
共享项目库
在 SharedProjectLib 中我有以下设置
`settings.gradle.kts
pluginManagement {
repositories {
mavenCentral()
gradlePluginPortal()
}
}
plugins {
id("org.gradle.toolchains.foojay-resolver-convention") version "0.5.0"
}
rootProject.name = "SharedProjectLib"
in build.gradle.kts I have
plugins {
`java-library`
kotlin("multiplatform") version "1.9.0"
}
group = "me.user"
version = "1.0-SNAPSHOT"
repositories {
mavenCentral()
}
kotlin {
jvm {
jvmToolchain(8)
withJava()
testRuns.named("test") {
executionTask.configure {
useJUnitPlatform()
}
}
}
sourceSets {
val commonMain by getting
val commonTest by getting {
dependencies {
implementation(kotlin("test"))
}
}
}
}`
构建此项目后,我有一个 jar 文件,我已将其移至 ProjectA 的 lib 文件夹中,现在在设置中我尝试了以下 build.gradle
`plugins {
id 'java'
...
dependencies {
implementation files('lib/SharedProjectLib-jvm-1.0-SNAPSHOT.jar')
...`
谢谢你
这些设置不起作用,我在网上找到了很多配置,但不知道如何应用它们。如何设置 ProjectA 以便可以从 SharedProjectLib 访问简单的数据类对象
我正在尝试创建一个包含公共代码(类、方法)的库,可以由其他项目导入和共享
Jar 文件可能不包含您的子项目可能使用的所有依赖项!
Settings.include
方法在设置脚本(即 settings.gradle.kts
/settings.gradle
文件)中的用途,记录在创建基本多项目构建文档的添加子项目部分 。然后您将传递一个项目路径:
// root settings.gradle.kts in your project:
// For example, if your library is in /common
include(":common")
include(":common:another-project")
然后,您可以使用相关 Gradle 配置(例如 dependencies
、
implementation
、api
)在 compileOnly
范围内声明对库项目的依赖关系:
// app/build.gradle.kts
dependencies {
implementation(project(":common"))
implementation(project(":common:another-project"))
}
(作为奖励,您可以通过 选择类型安全的项目依赖项功能预览(需要 Gradle 7+)来使其类型安全:)
// /settings.gradle.kts
enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
// app/build.gradle.kts
dependencies {
implementation(projects.common)
implementation(projects.common.anotherProject)
}
有关更多信息,请考虑查看 Gradle 文档: