2016-10-21 2 views
0

Gradle wird verwendet, um eine einfache Web-Anwendung zu erstellen, in Handvoll Eclipse-Projekte im selben Arbeitsbereich aufgeteilt. Gradle-Skript führt Tests aus/erstellt eine bereitstellbare EAR-Datei. Die EAR-Datei wird ohne Probleme auf einem Liberty Profile-Server ausgeführt.Gradle Eclipse Abhängigkeiten, Skipping TestCompile/bereitgestelltenRuntime usw.

Allerdings habe ich Probleme, es von Eclipse (mit Gradle Plugin) zu laufen. Die Wurzel der Probleme scheint die automatische Verwaltung von "Gradle-Dependence" zu sein (ein Bündel von Abhängigkeiten, die von "classpass container" org.springsource.ide.eclipse.gradle.classpathcontainer injiziert werden). Diese Sache scheint jede Abhängigkeit aufzunehmen, sei es compileOnly, testCompile, compiledCompile usw. Dies führt zu Bibliotheken mit Klassen wie javax.persistence., Javax.inject, die für den eigenständigen Build benötigt werden, aber vom Anwendungsserver bereitgestellt werden und nicht Wird bei der Ausführung von Eclipse benötigt, als Teil der Anwendung auf dem Anwendungsserver bereitgestellt und verursacht alle Arten von Fehlern/Warnungen.

Gibt es eine Möglichkeit, Abhängigkeiten zu filtern, die das Eclipse-Plug-in für die Bereitstellung aufruft?

Antwort

0

Dies ist ein langjähriges Problem mit STS-Gra- dell-Werkzeugen. Es beruht auf der Tatsache, dass Gradle-Tooling-API nicht zwischen den bereitgestellten/Test- usw. Abhängigkeiten in dem Modell unterscheidet, das für den 'Eclipse-Klassenpfad' erzeugt wird. Zumindest war es der Fall, als STS Gradle Tooling implementiert wurde. Das tooling-api-Modell hat sich seither weiterentwickelt, aber STS-Gra- del-Werkzeuge werden aus dem Programm genommen, und es ist unwahrscheinlich, dass dies eine echte Lösung sein wird.

Es gibt eine Problemumgehung, die speziell für diese genaue Situation implementiert wurde.

Gehen Sie zu Window >> Preferences >> Gradle (STS) >> WTP. Dort sehen Sie eine Liste mit dem regulären Ausdruck Gradle Dependencies Deployment Exclusions. Sie können dort mehr Ausdrücke hinzufügen. Diese fungieren als eine Art globaler Filter. Jedes mit einem dieser Ausdrücke übereinstimmende Jar wird von der WTP-Bereitstellungsassembly ausgeschlossen.

Dies kann für Sie arbeiten.

Es ist jedoch ein bisschen eine grobe Workaround.

Also ... Ich höre das BuildShip, das STS Gradle-Tooling ist offizieller Nachfolger jetzt has WTP support. Vielleicht möchten Sie also versuchen, zu BuildShip zu wechseln. Ich würde annehmen, dass es sich mit bereitgestellten, Test etc. Abhängigkeiten korrekt w.r.t zu WTP Deployment Assembly befasst (wenn es nicht in Betracht kommt, einen Bug-Report gegen BuildShip einzureichen).

+0

Danke, sehr hilfreich! (Beachten Sie, dass ich Ihren Kommentar nicht verbessern kann, da ich nicht genügend Reputationspunkte habe :() – Kartu

Verwandte Themen