Gradle 插件依赖(NoClassDefFoundError)
Gradle plugin dependency (NoClassDefFoundError)
我正在尝试编写 gradle 插件,它依赖于 RPM nebula 插件(它基本上包装了它)。我编译插件没有任何问题。在生成的 ivy.xml 我有
<dependencies>
<dependency org="com.netflix.nebula" name="gradle-ospackage-plugin" rev="4.1.0" conf="compile->default"/>
</dependencies>
感觉不错,但是当我在应用程序中应用我的插件时,我得到
Caused by: java.lang.NoClassDefFoundError: com/netflix/gradle/plugins/rpm/RpmPlugin
at com.cisco.td.gradle.rpm.ServiceRpmPlugin$_configureProject_closure2.doCall(ServiceRpmPlugin.groovy:27)
at com.cisco.td.gradle.rpm.ServiceRpmPlugin.configureProject(ServiceRpmPlugin.groovy:26)
执行这段代码时
project.plugins.with {
apply RpmPlugin
}
我尝试使用
从我的插件 class 添加对构建 classpath 的依赖
project.buildscript.dependencies {
classpath "com.netflix.nebula:gradle-ospackage-plugin:4.1.0"
}
但这抛出:
Caused by: org.gradle.api.InvalidUserDataException: Cannot change dependencies of configuration ':classpath' after it has been resolved.
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.validateMutation(DefaultConfiguration.java:631)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.run(DefaultConfiguration.java:174)
at org.gradle.api.internal.DefaultDomainObjectCollection.assertMutable(DefaultDomainObjectCollection.java:274)
当我将 nebula 依赖项作为 buildscript 依赖项直接添加到应用程序项目时,它起作用了,但这不是我认为它应该工作的方式 - 插件应该下载它的所有依赖项并且客户端不应该关心.. .
提前致谢!
几个小时后 - 问题是 pom.xml 没有生成。使用
创建时
uploadArchives {
repositories {
mavenDeployer {
repository(url: mavenLocal().url)
}
}
}
它按预期工作...
我正在尝试编写 gradle 插件,它依赖于 RPM nebula 插件(它基本上包装了它)。我编译插件没有任何问题。在生成的 ivy.xml 我有
<dependencies>
<dependency org="com.netflix.nebula" name="gradle-ospackage-plugin" rev="4.1.0" conf="compile->default"/>
</dependencies>
感觉不错,但是当我在应用程序中应用我的插件时,我得到
Caused by: java.lang.NoClassDefFoundError: com/netflix/gradle/plugins/rpm/RpmPlugin
at com.cisco.td.gradle.rpm.ServiceRpmPlugin$_configureProject_closure2.doCall(ServiceRpmPlugin.groovy:27)
at com.cisco.td.gradle.rpm.ServiceRpmPlugin.configureProject(ServiceRpmPlugin.groovy:26)
执行这段代码时
project.plugins.with {
apply RpmPlugin
}
我尝试使用
从我的插件 class 添加对构建 classpath 的依赖 project.buildscript.dependencies {
classpath "com.netflix.nebula:gradle-ospackage-plugin:4.1.0"
}
但这抛出:
Caused by: org.gradle.api.InvalidUserDataException: Cannot change dependencies of configuration ':classpath' after it has been resolved.
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.validateMutation(DefaultConfiguration.java:631)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.run(DefaultConfiguration.java:174)
at org.gradle.api.internal.DefaultDomainObjectCollection.assertMutable(DefaultDomainObjectCollection.java:274)
当我将 nebula 依赖项作为 buildscript 依赖项直接添加到应用程序项目时,它起作用了,但这不是我认为它应该工作的方式 - 插件应该下载它的所有依赖项并且客户端不应该关心.. .
提前致谢!
几个小时后 - 问题是 pom.xml 没有生成。使用
创建时uploadArchives {
repositories {
mavenDeployer {
repository(url: mavenLocal().url)
}
}
}
它按预期工作...