Как добавить проект как зависимость модуля [jar]JAVA

Программисты JAVA общаются здесь
Гость
Как добавить проект как зависимость модуля [jar]

Сообщение Гость »


Обновление:
В ходе дальнейшего расследования я обнаружил проблему
https://youtrack.jetbrains.com/issue/KT- 66523/jvmMain-resources-classpath-is-not-added-when-using-the-multiplatform-project-as-a-module
Путь к классу ресурса не добавляется при использовании путем добавления

Код: Выделить всё

    implementation(project(":sevenzipJavm"))
но когда jar добавлен, я могу получить доступ к ресурсам.
Итак, теперь, если проблема не устранена JetBrains, лучшим решением на данный момент является использовать проект как jar вместо классов.
но это приводит нас к новой проблеме, поскольку, похоже, нет простого способа добавления в виде jar. даже когда я это делаю

Код: Выделить всё

  implementation(files("../sevenzipJavm/build/libs/sevenzipJavm-jvm.jar"))
Он по-прежнему использует build\classes. Единственный способ заставить его использовать jar — это переместить его из проекта и затем связать с ним

Код: Выделить всё

implementation(files("D:/x/sevenzipJavm-jvm.jar"))
Это очень громоздко, так как мне приходится вручную собирать и перемещать его каждый раз, когда я что-то меняю.
Поэтому я также обновил заголовок проблемы. .
Опять же, не показывайте мне, как добавить проект в виде классов, а как jar, а не статически, перемещая его в другое место.

Старый вариант для справки:
Кажется, я не могу получить доступ к ресурсам src\jvmMain\resources\a.txt в jvmMain многоплатформенного проекта.
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)
Can anyone tell me what's wrong here? and how to fix it.
This code works on pure JVM projects if is not inside multiplatform.


Источник: https://stackoverflow.com/questions/781 ... -depndency

Вернуться в «JAVA»