2016-09-28 1 views
0

Ich habe ein seltsames Problem. Ich habe ein Projekt, das eine Krieg-Datei mit einigen benutzerdefinierten Einschlüssen wie Bildern usw. erstellt. Bis jetzt sieht es gut aus. Das einzige Problem, das übrig bleibt, ist, dass Gradle Quell-Jars/Zips und Javadoc-Jars/Zip in meinen WEB-INF/lib/Ordner meines Krieges zieht.Gradle War Plugin zieht Javadoc und Quellen

Ich dachte, es könnte ein Problem mit Idea sein, aber die gleichen Ergebnisse mit der Befehlszeile. Ich denke, es hat etwas mit der Abhängigkeitskonfiguration zu tun? Ich benutze Kompilierungs- und Laufzeitbereiche und meine Artefakte werden von Artifactory aufgelöst.

Kann mir jemand eine Richtung zeigen, wo das zu beheben?

Update:

Wenn ich erstellen Sie eine Aufgabe:

task copyAllDependencies(type: Copy) { 
    from configurations.runtime 
    into 'allRuntime' 
} 

oder

task copyAllDependencies(type: Copy) { 
    from configurations.compile 
    into 'allCompile' 
} 

Ich werde die Quellen als gut. Es scheint also, dass es etwas mit der Kompilier-/Laufzeitkonfiguration zu tun hat. Sie ziehen die Quellen und Javadoc. Aber warum?!

Abhängigkeiten werden wie folgt erklärt:

dependencies { 
    compile   group: 'org.drools',     name: 'drools-core',   version: DROOLS_VERSION 
    compile   group: 'org.drools',     name: 'drools-compiler',  version: DROOLS_VERSION 
    ... 

    runtime   group: 'net.sourceforge.barbecue',  name: 'barbecue',    version: '1.5-beta1', ext: 'jar' 
    ... 

    testCompile  group: 'org.fitnesse',  name: 'fitnesse',       version: '20130531' 
    ... 
} 
+0

Wie deklarieren Sie die Abhängigkeiten? –

+0

Ich habe nur das Skript minimiert, um das Repo zu definieren, java und das Kriegs-Plugin einzuschließen und die Abhängigkeiten zu definieren und es ist immer noch dasselbe ?! – Joschi

+0

Versuchen Sie 'gradle: mywarproject: Abhängigkeiten' von der Befehlszeile. Sind die Abhängigkeiten 'javadoc' und' sources' aufgelistet? –

Antwort

0

Tweaking Hier ist ein weiterer Versuch, ... ein bisschen hacky aber könnte funktionieren

configurations { 
    tempCompile 
    tempRuntime 
    tempTestCompile  
} 

dependencies { 
    tempCompile "org.drools:drools-core:${DROOLS_VERSION}" 
    tempRuntime "net.sourceforge.barbecue:barbecue:[email protected]" 
    tempTestCompile "org.fitnesse:fitnesse:20130531" 
    ... 

    compile configurations.tempCompile.asFileTree.matching { 
     exclude '**/*-sources.jar' 
     exclude '**/*-javadoc.jar' 
    } 
    runtime configurations.tempRuntime.asFileTree.matching { 
     exclude '**/*-sources.jar' 
     exclude '**/*-javadoc.jar' 
    } 
    testCompile configurations.tempTestCompile.asFileTree.matching { 
     exclude '**/*-sources.jar' 
     exclude '**/*-javadoc.jar' 
    } 
} 
+0

Das funktioniert! :) Grosses Dankeschön! Ich bin bereits zu einem mavenartigen Repository gewechselt. Jetzt habe ich das Problem, dass meine Gläser 2 oder 3 mal eingelegt werden. Aber das ist ein anderes Problem. Danke für alle Antworten! :) – Joschi

+0

Ok Ich hatte einen Fehler beim Kopieren und Einfügen. Jetzt funktioniert alles wie gewünscht. Nochmals vielen Dank! Du hast meinen Tag gerettet :) – Joschi

0

Wie wir in den Kommentaren entdeckt, Ihre Abhängigkeiten in javadoc und Quellen als transitive Abhängigkeiten bringen. Sie können möglicherweise diese ausschließen, indem

configurations.all { Configuration config -> 
    ['com.group1', 'com.group2', ..., 'com.groupN'].each { groupId -> 
     config.exclude [group: groupId, classifier: 'javadoc'] 
     config.exclude [group: groupId, classifier: 'sources'] 
    } 
} 

Hinweis: Ich bin kein Efeu Benutzer so der Selektor (Klassifikator: ‚javadoc‘ usw.) müssen möglicherweise

+0

Hey Lance danke für den Vorschlag. Ich dachte auch an etwas Ähnliches, aber das hat leider nicht funktioniert. Es heißt: "Abhängigkeitsregel ausschließen erfordert 'Gruppe' und/oder 'Modul' angegeben. Zum Beispiel: [group: 'com.google.collections']". Ich verwende Gradle 3.1. Vielleicht ist der "Klassifikator" dort erlaubt? – Joschi

+0

Hmm ... nervig kann man die Gruppe nicht "wildcard" machen. Auf den harten Code der Groupid's (hoffentlich nicht zu viele davon?) Aktualisiert. –

+0

Ich denke das Problem hier ist, dass Gradle die DefaultExcludeRule hier benutzt. Diese Regel hat nur "group" und "module" als Eigenschaft, daher kann ich "classifier" nicht angeben.Ich habe gerade versucht, es mit Hilfe der DependencyResolveDetails zu verwalten, aber das hat auch nicht funktioniert. Kaum zu glauben, dass es so schwer ist, das zu tun: D – Joschi

Verwandte Themen