2016-04-14 17 views
1

Ich benutze Eclipse Mars.2 (4.5.2) mit Buildship 1.0.14. Gradel Version ist 2.12.Gradle Project Abhängigkeiten in Eclipse mit Buildship

Ich importiere mein Megaprojekt in die Eclipse. No .project oder .classpath Dateien existieren vor dem Import. Alle Module wurden erfolgreich importiert. Aber fast jedes Projekt mit Java-Code hat Abhängigkeiten verpasst und rotes "X" angezeigt.

Wenn Sie eine Java-Datei mit einem Fehler öffnen, können Sie sehen, dass Eclipse den Import nicht auflösen kann. Wenn Sie die importierte Klasse jedoch nach Name öffnen, kann sie in der Abhängigkeit des anderen Moduls gefunden werden.

Gradle -> Aktualisieren Projekt hilft nicht.

Die notwendigen Abhängigkeiten in der Wurzel build.gradle auf diese Weise erklärt:

ext.library = [ 
    swagger: [ 
      [ group: "io.swagger", name: "swagger-annotations", version: "1.5.3" ], 
      [ group: "io.swagger", name: "swagger-core", version: "1.5.3" ], 
      [ group: "io.swagger", name: "swagger-jaxrs", version: "1.5.3" ] 
    ] 
] 

und in den Modulen erkläre ich es so:

dependencies { 
    providedCompile library.swagger 
} 

Wenn Sie gradle build von der Kommandozeile ausgeführt werden oder sogar aus Eclipse, der Build ist erfolgreich.

Das kleine Projektbeispiel zur Reproduktion dieses Problems finden Sie unter github (dank RaGe für die Teilnahme).

Können Sie mir helfen, dieses Problem mit Eclipse zu lösen?

+0

Welche Grapple-Version verwenden Sie? – RaGe

+0

Verwenden Sie das Graples War Plugin? – RaGe

+0

Gradel Version ist 2.12. Ja, das Kriegs-Plugin wird verwendet. – dds

Antwort

1

Antwort mit Bezug auf das Codebeispiel, das Sie zur Verfügung gestellt haben here.

Sie verwenden nicht das War-Plugin, sondern deklarieren stattdessen Ihre eigene benutzerdefinierte Konfiguration namens providedCompile. Gradle und durch Erweiterung, buildship/eclipse weiß nicht, was providedCompile bedeutet. Daher werden die Abhängigkeiten, die Sie in providedCompile aufgeführt haben, nicht als Abhängigkeiten der Kompilierzeit verwendet.

Daraus folgt, dass der Import-Anweisungen Zeitfehler kompilieren werden - sowohl in Eclipse und von gradle Kommandozeile mit gradle build

Sie providedCompile zum Kompilieren Classpath hinzufügen können, indem Sie:

sourceSets.main.compileClasspath += [configurations.providedCompile] 

Wenn Sie auch hinzufügen das Eclipse-Plug-in zu Ihrem Projekt, können Sie Eclipse-Kompilierung Klassenpfad ändern mit:

+0

Hinzufügen von Eclipse-Plugin und Konfiguration löste es, danke! – dds

+0

großartig! Sie sollten überlegen, die Antwort ebenfalls zu verbessern. – RaGe

0

Jungs auf Der offizielle Bugtracker sagte mir, dass mit Gradle 2.12 jetzt der compileOnly Scope verwendet werden kann, der standardmäßig auch mit Eclipse verdrahtet ist.

Verwandte Themen