2016-12-14 3 views
0

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-&gt;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ügen
project.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!

Antwort

0

Nach ein paar Stunden - das Problem war, dass pom.xml wurde nicht generiert. Wenn erstellt mit

uploadArchives { 
    repositories { 
     mavenDeployer { 
     repository(url: mavenLocal().url) 
     } 
    } 
} 

es wie erwartet funktioniert ...

Verwandte Themen