我开发了一个Gradle插件。自从gradle的最新升级以来,该插件失败了,我需要调试插件才能找出究竟出了什么问题。但是,我无法调试插件。
我正在做以下事情:
GRADLE_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"
然而,当IntelliJ中的ClassNotFoundException
:org.gradle.launcher.GradleMain
时,会立即失败。
该插件应该适用于所有gradle版本。该插件本身具有以下gradle相关依赖项:
<dependency>
<scope>provided</scope>
<groupId>org.gradle</groupId>
<artifactId>gradle-core</artifactId>
<version>1.12</version>
</dependency>
<dependency>
<scope>provided</scope>
<groupId>org.gradle</groupId>
<artifactId>gradle-plugins</artifactId>
<version>1.12</version>
</dependency>
<dependency>
<scope>provided</scope>
<groupId>org.gradle</groupId>
<artifactId>gradle-base-services</artifactId>
<version>1.12</version>
</dependency>
我也尝试过添加以下依赖项:
<dependency>
<scope>provided</scope>
<groupId>org.gradle</groupId>
<artifactId>gradle-wrapper</artifactId>
<version>4.5.1</version>
</dependency>
但这并没有任何区别。
这里的难点在于插件应该与所有 Gradle版本(版本1.12到4.5)一起使用。这就是为什么插件本身在编译时依赖于旧版本的Gradle的原因。在不同版本的Gradle不同的地方,我目前采用反射来实现我在运行时的目标。
虽然Gradle 1.12属于项目的依赖项,但正在调试的构建使用Gradle 4.5.1。但是,即使我切换正在调试的项目的gradle版本,仍然会出现相同的错误。此外,由于插件在4.5之前的所有版本上都能正常工作,因此即使我能使其工作,这样的调试会话也不会有很多帮助。
关于如何让调试器调试插件的任何想法?