我有一個 Java 庫https://github.com/skycavemc/skycavelib我想在 Kotlin 專案中使用它。這是我將庫作為依賴項的 build.gradle:
import java.util.Properties
import java.io.FileInputStream
plugins {
kotlin("jvm") version "1.7.10"
}
group = "de.skycave"
version = "1.0.0"
val localProperties = Properties()
localProperties.load(FileInputStream(rootProject.file("local.properties")))
repositories {
mavenCentral()
maven { url = uri("https://repo.papermc.io/repository/maven-public/") }
maven { url = uri("https://jitpack.io") }
maven {
url = uri("https://maven.pkg.github.com/skycavemc/skycavelib")
credentials {
username = localProperties.getProperty("gpr.user")
password = localProperties.getProperty("gpr.key")
}
}
}
dependencies {
implementation(kotlin("stdlib"))
compileOnly("io.papermc.paper:paper-api:1.19.2-R0.1-SNAPSHOT")
implementation("de.skycave:skycavelib:1.0.2")
}
java {
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
}
我還確保我的專案中有一個名為 local.properties 的檔案,我在其中正確設定了 gpr.user 和 gpr.key。身份驗證作業,庫被下載和索引。IntelliJ 還在“外部庫”下顯示了該庫。
當我嘗試使用該庫中的類時,IntelliJ 的自動完成功能會建議正確的匯入。但是在匯入它之后,IntelliJ 在匯入行和我使用該類的行中說“未決議的參考”。
但是,gradle 構建仍然成功。此外,只有在 Kotlin 類中從該庫中匯入某些內容時,我才會遇到此問題。在 Java 類中,IntelliJ 可以決議參考。這個問題不僅發生在一個特定的專案中,而且發生在我嘗試從該庫中匯入某些內容的所有專案中,這意味著它可能不是專案配置的問題。在匯入 Kotlin 和 Java 檔案時,我使用的另一個 Java 庫(paper-api)作業正常。使快取無效并重新加載所有 gradle 專案并沒有解決問題。
我想我的庫https://github.com/skycavemc/skycavelib中有一些配置錯誤。有人知道那里可能出了什么問題嗎?這是我試圖從中匯入的庫的 build.gradle:
plugins {
id 'java'
id 'org.jetbrains.kotlin.jvm' version '1.7.10'
id 'com.github.johnrengelman.shadow' version '7.1.2'
id 'maven-publish'
}
group = 'de.skycave'
version = '1.0.2'
def localProperties = new Properties()
localProperties.load(new FileInputStream(rootProject.file("local.properties")))
repositories {
mavenCentral()
maven {
name = 'papermc-repo'
url = 'https://repo.papermc.io/repository/maven-public/'
}
maven {
name = 'sonatype'
url = 'https://oss.sonatype.org/content/groups/public/'
}
maven {
name = 'jitpack'
url = 'https://jitpack.io'
}
}
dependencies {
implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.7.10'
compileOnly 'io.papermc.paper:paper-api:1.19.2-R0.1-SNAPSHOT'
implementation 'org.mongodb:mongodb-driver-sync:4.7.1'
implementation 'com.google.code.gson:gson:2.9.1'
implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.12.0'
implementation group: 'commons-io', name: 'commons-io', version: '2.11.0'
implementation 'com.github.heuerleon:mcguiapi:v1.3.5'
}
def targetJavaVersion = 17
java {
def javaVersion = JavaVersion.toVersion(targetJavaVersion)
sourceCompatibility = javaVersion
targetCompatibility = javaVersion
if (JavaVersion.current() < javaVersion) {
toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion)
}
manifest {
attributes 'Main-Class': "de.skycave.skycavelib.SkyCaveLib"
}
}
tasks.withType(JavaCompile).configureEach {
if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) {
//noinspection GroovyAssignabilityCheck, GroovyAccessibility
options.release = targetJavaVersion
}
}
processResources {
def props = [version: version]
inputs.properties props
filteringCharset 'UTF-8'
filesMatching('plugin.yml') {
expand props
}
}
build {
dependsOn(shadowJar)
}
shadowJar {
archiveFileName.set("${project.name}-${project.version}.jar")
}
publishing {
repositories {
maven {
name = "GitHubPackages"
url = "https://maven.pkg.github.com/skycavemc/skycavelib"
credentials {
username = localProperties.getProperty("gpr.user") ?: System.getenv("GITHUB_ACTOR")
password = localProperties.getProperty("gpr.token") ?: System.getenv("ACCESS_TOKEN")
}
}
}
publications {
library(MavenPublication) {
from components.java
}
}
}
uj5u.com熱心網友回復:
解決方案
我做了更多研究,發現陰影罐子可能無法正常作業。我洗掉了這部分
build {
dependsOn(shadowJar)
}
從我的庫的 build.gradle 并將其發布到包存盤庫。從那以后一切正常,似乎這就是問題所在。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/509861.html
上一篇:無法為“:app@debug/compileClasspath”決議依賴項“com.github.dhaval2404:imagepicker-support:1.7.1”
