从共享 kotlin 项目访问源代码 - Gradle

问题描述 投票:0回答:1

我试图了解如何在 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 访问简单的数据类对象

我正在尝试创建一个包含公共代码(类、方法)的库,可以由其他项目导入和共享

kotlin gradle shared-libraries
1个回答
0
投票

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 文档:

© www.soinside.com 2019 - 2024. All rights reserved.