我正在尝试使用 gradle signing plugin 对 Android AAR Artifact 进行签名.不幸的是,我在这个过程中得到了一个相当无用的 NullPointerException
:
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':library:signArchives'.
> java.lang.NullPointerException (no error message)
* Try:
Run with --info or --debug option to get more log output.
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':library:signArchives'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
[...snip...]
at org.gradle.launcher.Main.main(Main.java:37)
at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:50)
at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:32)
at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:33)
at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:130)
at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:48)
Caused by: java.lang.NullPointerException
at org.bouncycastle.openpgp.PGPSignatureGenerator.initSign(Unknown Source)
at org.bouncycastle.openpgp.PGPSignatureGenerator.initSign(Unknown Source)
at org.bouncycastle.openpgp.PGPSignatureGenerator$initSign.call(Unknown Source)
at org.gradle.plugins.signing.signatory.pgp.PgpSignatory.createSignatureGenerator(PgpSignatory.groovy:54)
at org.gradle.plugins.signing.signatory.pgp.PgpSignatory.sign(PgpSignatory.groovy:64)
[...snip...]
... 52 more
BUILD FAILED
调试此异常最简单的方法是什么?有没有办法将调试器附加到 gradle?我可以构建签名插件,插入一些日志语句并告诉我的构建选择我的自定义版本而不是它附带的版本吗?
最佳答案
根据 thread in the gradle forums有一个有点 secret 的 org.gradle.debug
-flag 允许您附加调试器。
gradle someTask --no-daemon -Dorg.gradle.debug=true
对于修补程序/自定义插件,将您复制和修改的插件放在 rootProjectDir/buildSrc/src/main/groovy
中就足够了。您可以在 Gradle site 上阅读更多关于编写自定义插件的信息。 .
关于java - 如何调试第三方Gradle插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20789797/