Ich versuche, Gradle-Plugin zu schreiben, die abhängig von RPM-Nebel-Plugin ist (im Grunde Wraps es). Ich kompiliere das Plugin ohne Probleme. In erzeugten ivy.xml habe ichGradle Plugin-Abhängigkeit (NoClassDefFoundError)
<dependencies>
<dependency org="com.netflix.nebula" name="gradle-ospackage-plugin" rev="4.1.0" conf="compile->default"/>
</dependencies>
Welche ok fühlt, aber wenn ich mein Plugin in Anwendung anwenden, bekomme ich
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)
Wenn Sie diesen Abschnitt der Ausführung von Code
project.plugins.with {
apply RpmPlugin
}
Ich habe versucht, die Abhängigkeit von Build Klassenpfad von meiner Plugin-Klasse mit
hinzuzufügenproject.buildscript.dependencies {
classpath "com.netflix.nebula:gradle-ospackage-plugin:4.1.0"
}
Aber das wirft:
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$2.run(DefaultConfiguration.java:174)
at org.gradle.api.internal.DefaultDomainObjectCollection.assertMutable(DefaultDomainObjectCollection.java:274)
Es funktioniert, wenn ich die Nebel Abhängigkeit direkt an die Anwendung Projekt als buildscript Abhängigkeit hinzufügen, aber das ist nicht, wie ich denke, es sollte funktionieren - das Plugin sollte alle seine Abhängigkeiten herunterladen und der Client sollte nicht kümmern ...
Vielen Dank im Voraus!