有PluginRegistry
通过其密钥查找插件,即直接通过文件名加载插件。但是我们如何检索应用的Gradle插件密钥?
请建议比遍历 .jar 文件更简单的解决方案。
答案 0 :(得分:0)
可悲的是,Gradle并未保留此信息。我们可以转储一些项目以确认project.plugins
,project.pluginManager
,gradle.plugins
和gradle.pluginManager
。虽然没有保留id
,但我们仍然可以确定他们班级安装的插件。
apply plugin: "groovy"
group = 'com.jbirdvegas.q41287036'
version = '0.1'
repositories {
jcenter()
}
println "Plugins: ${project.plugins.size()}"
project.plugins.each {
println it.getClass().getCanonicalName()
}
println "\nproject.plugins dump: \n${project.plugins.dump()}"
println "\nproject.pluginManager dump: \n${project.pluginManager.dump()}"
task nothing {}
println "\n\ngradle.plugins dump: \n${gradle.plugins.dump()}"
println "\n\ngradle.pluginManager dump: \n${gradle.pluginManager.dump()}"
然后,当我们运行时,我们可以看到每个应用插件的类,但不保留id
。
$ ./gradlew -b build_simple.gradle -q nothing
Plugins: 12
com.gradle.scan.plugin.BuildScanPlugin
org.gradle.api.plugins.HelpTasksPlugin
org.gradle.language.base.plugins.LifecycleBasePlugin
org.gradle.api.plugins.BasePlugin
org.gradle.api.plugins.ReportingBasePlugin
org.gradle.platform.base.plugins.ComponentBasePlugin
org.gradle.language.base.plugins.LanguageBasePlugin
org.gradle.platform.base.plugins.BinaryBasePlugin
org.gradle.api.plugins.JavaBasePlugin
org.gradle.api.plugins.GroovyBasePlugin
org.gradle.api.plugins.JavaPlugin
org.gradle.api.plugins.GroovyPlugin
project.plugins dump:
<org.gradle.api.internal.plugins.DefaultPluginContainer@45947ad4 pluginRegistry=org.gradle.api.internal.plugins.DefaultPluginRegistry@78154b46 pluginManager=org.gradle.api.internal.plugins.DefaultPluginManager_Decorated@1eb1cc4a type=interface org.gradle.api.Plugin eventRegister=org.gradle.api.internal.collections.CollectionEventRegister@7530d0a2 store=[com.gradle.scan.plugin.BuildScanPlugin@523efb4c, org.gradle.api.plugins.HelpTasksPlugin@509441c8, org.gradle.language.base.plugins.LifecycleBasePlugin@7731a4ac, org.gradle.api.plugins.BasePlugin@6f9eb0ab, org.gradle.api.plugins.ReportingBasePlugin@7c2b8596, org.gradle.platform.base.plugins.ComponentBasePlugin@13fddaba, org.gradle.language.base.plugins.LanguageBasePlugin@335afa66, org.gradle.platform.base.plugins.BinaryBasePlugin@4aad9daf, org.gradle.api.plugins.JavaBasePlugin@39ac90d9, org.gradle.api.plugins.GroovyBasePlugin@c55ff20, org.gradle.api.plugins.JavaPlugin@7f6bbaa3, org.gradle.api.plugins.GroovyPlugin@32cfecd3] mutateActions=[]>
project.pluginManager dump:
<org.gradle.api.internal.plugins.DefaultPluginManager_Decorated@1eb1cc4a __dyn_obj__=null __meta_class__=groovy.lang.MetaClassImpl@42a21d1d[class org.gradle.api.internal.plugins.DefaultPluginManager_Decorated] instantiator=org.gradle.api.internal.DependencyInjectingInstantiator@3d4ec275 applicator=org.gradle.api.internal.plugins.RuleBasedPluginApplicator@4f48cb44 pluginRegistry=org.gradle.api.internal.plugins.DefaultPluginRegistry@78154b46 pluginContainer=[com.gradle.scan.plugin.BuildScanPlugin@523efb4c, org.gradle.api.plugins.HelpTasksPlugin@509441c8, org.gradle.language.base.plugins.LifecycleBasePlugin@7731a4ac, org.gradle.api.plugins.BasePlugin@6f9eb0ab, org.gradle.api.plugins.ReportingBasePlugin@7c2b8596, org.gradle.platform.base.plugins.ComponentBasePlugin@13fddaba, org.gradle.language.base.plugins.LanguageBasePlugin@335afa66, org.gradle.platform.base.plugins.BinaryBasePlugin@4aad9daf, org.gradle.api.plugins.JavaBasePlugin@39ac90d9, org.gradle.api.plugins.GroovyBasePlugin@c55ff20, org.gradle.api.plugins.JavaPlugin@7f6bbaa3, org.gradle.api.plugins.GroovyPlugin@32cfecd3] plugins=[class org.gradle.platform.base.plugins.ComponentBasePlugin:org.gradle.api.internal.plugins.DefaultPluginRegistry$RegistryAwarePluginImplementation@557e4a5, class org.gradle.platform.base.plugins.BinaryBasePlugin:org.gradle.api.internal.plugins.DefaultPluginRegistry$RegistryAwarePluginImplementation@57cf4be7, class com.gradle.scan.plugin.BuildScanPlugin:org.gradle.api.internal.plugins.DefaultPluginRegistry$RegistryAwarePluginImplementation@1cd97601, class org.gradle.language.base.plugins.LifecycleBasePlugin:org.gradle.api.internal.plugins.DefaultPluginRegistry$RegistryAwarePluginImplementation@15c28c35, class org.gradle.api.plugins.JavaBasePlugin:org.gradle.api.internal.plugins.DefaultPluginRegistry$RegistryAwarePluginImplementation@2f8a30e4, class org.gradle.language.base.plugins.LanguageBasePlugin:org.gradle.api.internal.plugins.DefaultPluginRegistry$RegistryAwarePluginImplementation@237d681, class org.gradle.api.plugins.HelpTasksPlugin:org.gradle.api.internal.plugins.DefaultPluginRegistry$RegistryAwarePluginImplementation@5589c1b8, class org.gradle.api.plugins.GroovyBasePlugin:org.gradle.api.internal.plugins.DefaultPluginRegistry$RegistryAwarePluginImplementation@542b5c18, class org.gradle.api.plugins.BasePlugin:org.gradle.api.internal.plugins.DefaultPluginRegistry$RegistryAwarePluginImplementation@2a585b69, class org.gradle.api.plugins.ReportingBasePlugin:org.gradle.api.internal.plugins.DefaultPluginRegistry$RegistryAwarePluginImplementation@1667137d, class org.gradle.api.plugins.JavaPlugin:org.gradle.api.internal.plugins.DefaultPluginRegistry$RegistryAwarePluginImplementation@d789408, class org.gradle.api.plugins.GroovyPlugin:org.gradle.api.internal.plugins.DefaultPluginRegistry$RegistryAwarePluginImplementation@33dd223] instances=[class org.gradle.platform.base.plugins.ComponentBasePlugin:org.gradle.platform.base.plugins.ComponentBasePlugin@13fddaba, class org.gradle.platform.base.plugins.BinaryBasePlugin:org.gradle.platform.base.plugins.BinaryBasePlugin@4aad9daf, class com.gradle.scan.plugin.BuildScanPlugin:com.gradle.scan.plugin.BuildScanPlugin@523efb4c, class org.gradle.language.base.plugins.LifecycleBasePlugin:org.gradle.language.base.plugins.LifecycleBasePlugin@7731a4ac, class org.gradle.api.plugins.JavaBasePlugin:org.gradle.api.plugins.JavaBasePlugin@39ac90d9, class org.gradle.language.base.plugins.LanguageBasePlugin:org.gradle.language.base.plugins.LanguageBasePlugin@335afa66, class org.gradle.api.plugins.HelpTasksPlugin:org.gradle.api.plugins.HelpTasksPlugin@509441c8, class org.gradle.api.plugins.GroovyBasePlugin:org.gradle.api.plugins.GroovyBasePlugin@c55ff20, class org.gradle.api.plugins.BasePlugin:org.gradle.api.plugins.BasePlugin@6f9eb0ab, class org.gradle.api.plugins.ReportingBasePlugin:org.gradle.api.plugins.ReportingBasePlugin@7c2b8596, class org.gradle.api.plugins.JavaPlugin:org.gradle.api.plugins.JavaPlugin@7f6bbaa3, class org.gradle.api.plugins.GroovyPlugin:org.gradle.api.plugins.GroovyPlugin@32cfecd3] idMappings=[:]>
gradle.plugins dump:
<org.gradle.api.internal.plugins.DefaultPluginContainer@61d42bc5 pluginRegistry=org.gradle.api.internal.plugins.DefaultPluginRegistry@38ca4273 pluginManager=org.gradle.api.internal.plugins.DefaultPluginManager_Decorated@5fef5ff0 type=interface org.gradle.api.Plugin eventRegister=org.gradle.api.internal.collections.CollectionEventRegister@79b9180f store=[] mutateActions=[]>
gradle.pluginManager dump:
<org.gradle.api.internal.plugins.DefaultPluginManager_Decorated@5fef5ff0 __dyn_obj__=null __meta_class__=groovy.lang.MetaClassImpl@42a21d1d[class org.gradle.api.internal.plugins.DefaultPluginManager_Decorated] instantiator=org.gradle.api.internal.DependencyInjectingInstantiator@53c09a79 applicator=org.gradle.api.internal.plugins.ImperativeOnlyPluginApplicator@76f54f2e pluginRegistry=org.gradle.api.internal.plugins.DefaultPluginRegistry@38ca4273 pluginContainer=[] plugins=[:] instances=[:] idMappings=[:]>