を使用してgradle
プラグインを書き込もうとしています。このように動作するはずです。設定は、gradleプラグイン拡張のインスタンスを作成できませんでした
apply plugin: 'appenv'
app {
srcLink ""
downloadPath ""
}
を提供しながら、それは私が
class ApplicationEnvironmentPlugin : Plugin<Project> {
override fun apply(project: Project) {
project.extensions.create("app", ApplicationEnvironmentExtension::class.java)
project.task(mapOf ("type" to Download::class.java), "downloadAll")
}
}
プラグインクラスを作成して拡張クラスに
open class ApplicationEnvironmentExtension {
val project: Any?
constructor(project: Any?) {
this.project = project
}
var srcLink: String = ""
var downloadPath: String = ""
}
を作成したタスクdownloadAll
を使用してdownloadPath
にsrcLink
し、ストアからファイルをダウンロードできるようにする必要がありますそしてここに彼のt彼は私がそれを構築し、私のプロジェクトにjar
依存関係として追加
class Download : DefaultTask() {
@TaskAction
fun download() {
val extension = this.project.extensions.getByName("app") as ApplicationEnvironmentExtension
DownloadUtils.download(extension.srcLink, extension.downloadPath)
}
}
タスク。 タスクが追加されたかどうかを確認するには、私はgradle tasks
を実行します。しかし、その時に、私は私が
Caused by: org.gradle.internal.reflect.ObjectInstantiationException: Could not create an instance of type com.lapots.gradle.plugins.appenv.ApplicationEnvironmentExtension_Decorated.
at org.gradle.internal.reflect.DirectInstantiator.newInstance(DirectInstantiator.java:53)
at org.gradle.api.internal.ClassGeneratorBackedInstantiator.newInstance(ClassGeneratorBackedInstantiator.java:36)
at org.gradle.api.internal.plugins.DefaultConvention.create(DefaultConvention.java:106)
at com.lapots.gradle.plugins.appenv.ApplicationEnvironmentPlugin.apply(ApplicationEnvironmentPlugin.kt:11)
at com.lapots.gradle.plugins.appenv.ApplicationEnvironmentPlugin.apply(ApplicationEnvironmentPlugin.kt:8)
at org.gradle.api.internal.plugins.ImperativeOnlyPluginApplicator.applyImperative(ImperativeOnlyPluginApplicator.java:35)
at org.gradle.api.internal.plugins.RuleBasedPluginApplicator.applyImperative(RuleBasedPluginApplicator.java:43)
at org.gradle.api.internal.plugins.DefaultPluginManager.doApply(DefaultPluginManager.java:144)
... 58 more
Caused by: java.lang.IllegalArgumentException: Could not find any public constructor for class com.lapots.gradle.plugins.appenv.ApplicationEnvironmentExtension_Decorated which accepts parameters [].
at org.gradle.internal.reflect.DirectInstantiator.newInstance(DirectInstantiator.java:44)
... 65 more
問題は何である
を取得し、エラースタックトレースでCould not create an instance of type com.lapots.gradle.plugins.appenv.ApplicationEnvironmentExtension_Decorated.
を取得しますか?拡張のためにいくつかの追加コンストラクタを提供する必要がありますか?
Cool。できます。 – lapots