我想从本地 jar
加载我的自定义插件。 jar
文件编译得很好,当我检查它时, list 和插件类都在那里。
gradlePlugin {
plugins {
create("asdf") { // <-- I really call it "asdf" in the kts script
id = "asdf"
implementationClass = "pluginTest.TestPlugin"
version = "1.4.0"
}
}
}
该插件还没有做任何有用的事情,因为它应该是一个概念验证,以确保它确实有效:
class TestPlugin : Plugin<Project> {
override fun apply(project: Project) {
println("Hallo TestPlugin!")
}
}
然后我尝试在另一个项目中像这样使用它:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath(files("..\\..\\path\\to\\pluginTest.jar"))
}
}
plugins {
id("asdf") version "1.4.0"
}
但它一直告诉我:
Plugin [id: 'asdf', version: '1.4.0'] was not found in any of the following sources:
我在这里缺少什么?我使用 Gradle v6.5。
最佳答案
与 @BjørnVester's答案我想出来了!
您需要将 buildscript
放入 settings.gradle.kts
中,因为它不会在 build.gradle.kts
中执行即使放在插件
之前。
buildscript {
repositories {
flatDir {
dirs("..\\reusable-kotlin\\build\\libs") // <-- folder with jars
}
}
dependencies {
classpath("com.hedev.kotlin:reusable-kotlin:1.4.0")
}
}
但是有一个问题!您必须在 classpath
的名称标识符中使用 jar
的文件名,如下所示:
group:file-name:version
gradle 将查找的文件是 file-name-version.jar
或 file-name.jar
如果您执行以下操作,您将在错误消息中看到它一个错误(我故意添加了 _
来触发错误):
Could not resolve all artifacts for configuration 'classpath'.
Could not find com.hedev.kotlin:reusable-kotlin_:1.4.0. Searched in the following locations:
- file:/C:/some/path/reusable-kotlin/build/libs/reusable-kotlin_-1.4.0.jar
- file:/C:/some/path/reusable-kotlin/build/libs/reusable-kotlin_.jar
为了使其正常工作,我还必须将 group
属性添加到插件本身:
gradlePlugin {
plugins {
create("asdf") {
id = "asdf"
implementationClass = "com.hedev.kotlin.gradle.TestPlugin"
version = "1.4.0"
group = "com.hedev.kotlin"
}
}
}
最后,您可以在 build.gradle.kts
中应用它(此处没有版本):
plugins {
id("asdf")
}
关于kotlin - 不使用maven应用本地jar-plugin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65665333/