2016-04-30 8 views
2

Ich erstelle ein Gradle-Plugin, das Gson verwendet, aber wenn ich das Plugin auf meinem Client verwende, wirft es Ich erwarte, dass ich meine Abhängigkeiten in das Plugin falsch verlinke, aber ich bin mir nicht ganz sicher, also wäre jede Hilfe großartig.Hinzufügen von Abhängigkeiten zu einem benutzerdefinierten Gradle-Plugin

Die build.gradle im Plugin

group 'nl.daanluttik.gradle' 
version '0.1' 

apply plugin: 'java' 
apply plugin: 'maven' // the plugin to distribute to maven 

sourceCompatibility = 1.8 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile group: 'com.google.code.gson', name: 'gson', version: '1.7.2' 
    compile gradleApi()/*The gradle plugin api*/ 
    testCompile group: 'junit', name: 'junit', version: '4.11' 
} 

//To distribute to maven 
uploadArchives { 
    repositories { 
     mavenLocal() 
    } 
} 

A-Segment des buildgradle im Client-Projekt

buildscript { 
    repositories { 
     mavenLocal() 
    } 
    dependencies { 
     classpath group: 'nl.daanluttik.gradle', name: 'peach', version: '0.1' 
    } 
} 
+1

Ist das wirklich der erste Fehler? Am häufigsten sehe ich 'NoClassDefFoundError' (im Gegensatz zu' ClassNotFoundException'), wenn ein statischer Initializer eine Ausnahme ausgelöst hat und die Klasse deshalb nicht geladen werden konnte und später nicht verfügbar ist. – Vampire

+0

@ BjörnKautler Sie haben völlig Recht. Ich werde es ändern –

+0

Großartig, ich habe dem Kommentar eine Antwort gegeben, damit du entsprechend darauf handeln kannst :-) – Vampire

Antwort

0

Ist das wirklich der erste Fehler? Ich sehe am häufigsten NoClassDefFoundError (im Gegensatz zu ClassNotFoundException), wenn ein statischer Initialisierer eine Ausnahme ausgelöst hat und daher die Klasse nicht geladen werden konnte und später nicht verfügbar ist.

+0

Wenn ich das Plugin mit --info und --debug laufen sehe ich immer noch keinen Fehler vor 'java.lang.NoClassDefFoundError', so habe ich immer noch keine Ahnung, woher das Problem kommt oder Wie man es löst. –

+0

Ah, Entschuldigung, dann habe ich dich missverstanden. Von dem Kommentar habe ich gedacht, dass das dein Problem war. – Vampire

+0

Das ist in Ordnung, ich meinte, dass ich die Problembeschreibung ändern würde. Die Quelle des Problems ist mir noch immer ein Rätsel. –

0

Ihre fehlende Pom-Datei mit Ihren Abhängigkeiten. Wenn es nur Java ist, dann können Sie einfach die maven-publish verwenden, die den Pom für Sie korrekt generiert.

apply plugin: 'maven-publish' 

publishing { 
    publications { 
     maven(MavenPublication) { 
      groupId 'nl.daanluttik.gradle' 
      artifactId 'peach' 
      version '0.1' 

      from components.java 
     } 
    } 
} 

Dann können Sie zu den Repositories veröffentlichen (Standard nur lokal) mit gradle publish

Referenz: https://docs.gradle.org/current/userguide/publishing_maven.html

Verwandte Themen