2016-12-14 337 views
0

我正在嘗試編寫gradle插件,它依賴於RPM星雲插件(它基本上包裝了它)。我編譯插件沒有任何問題。在生成的ivy.xml我Gradle插件依賴項(NoClassDefFoundError)

<dependencies> 
     <dependency org="com.netflix.nebula" name="gradle-ospackage-plugin" rev="4.1.0" conf="compile-&gt;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 
    } 

本節

我試圖從我的插件類使用

添加對構建類路徑的依賴
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$2.run(DefaultConfiguration.java:174) 
    at org.gradle.api.internal.DefaultDomainObjectCollection.assertMutable(DefaultDomainObjectCollection.java:274) 

它的工作原理,當我直接添加星雲依賴於應用程序項目作爲buildscript依賴,但這不是我怎麼想它應該工作 - 該插件應該下載所有的依賴關係,客戶端不應該在意...

在此先感謝!

回答

0

幾小時後 - 問題是,沒有生成pom.xml。當使用

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

它按預期工作...創建