如何将项目添加为 [jar] 模块依赖项

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

更新:

经过进一步调查,我发现了问题 https://youtrack.jetbrains.com/issue/KT-66523/jvmMain-resources-classpath-is-not-added-when-using-the-multiplatform-project-as-a-module

添加消耗时未添加资源classpath

    implementation(project(":sevenzipJavm"))

但是添加 jar 后我就可以访问资源了。

因此,除非 JetBrains 解决了该问题,否则当前最好的解决方法是将项目作为 jar 而不是类来使用。 但我发现的是静态 jar 链接

  implementation(files("../sevenzipJavm/build/libs/sevenzipJavm.jar"))

问题是它不是从项目构建的,而是需要构建的 jar。这会导致:

  1. 我需要从其他项目手动构建 jar,这不是我想要的。
  2. 更改未自动反映

因此,我也更新了问题标题。 再次,我不会向我展示如何添加为类,而是添加为 jar,但不是静态添加。


旧供参考:

好像无法访问src\jvmMain的资源 多平台项目的 jvmMain 中的 esources .txt。

gradle kts:

plugins {
    alias(libs.plugins.kotlinMultiplatform)
    alias(libs.plugins.android.library)
//    id("module.publication")
}

kotlin {
    applyDefaultHierarchyTemplate()
    jvm()


    androidTarget {

        publishLibraryVariants("release")
        compilations.all {
            kotlinOptions {
                jvmTarget = "1.8"
            }
        }
    }

//    iosX64()
//    iosArm64()
//    iosSimulatorArm64()
//    linuxX64()

    sourceSets {

        commonMain.dependencies {


        }

        commonTest.dependencies {
            implementation(libs.kotlin.test)
        }

        androidMain.dependencies {
        }

        jvmMain {
            dependencies {
            }

        }


    }
}

android {
    namespace = "org.jetbrains.kotlinx.multiplatform.library.sevenZip"
    compileSdk = libs.versions.android.compileSdk.get().toInt()
    defaultConfig {
        minSdk = libs.versions.android.minSdk.get().toInt()
    }
}

样品:

        val message =
            Thread.currentThread().contextClassLoader.getResource("a.txt")?.readText()
        println(message)

谁能告诉我这里出了什么问题吗?以及如何修复它。 如果不在多平台内,此代码适用于纯 JVM 项目。

java kotlin gradle resources gradle-kotlin-dsl
1个回答
0
投票

而不是这个

Thread.currentThread().contextClassLoader.getResource("a.txt")?.readText()

这样做,

this.javaClass.classLoader.getResource("a.txt")?.readText()

我刚刚测试过,它有效。

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