6 Stimmen

Eklipse: Mehrere Dynamic Web-Projekte sollen zu einer einzigen War-Datei beitragen?

Ich befinde mich in einer Situation, in der ich grundsätzlich in der Lage sein möchte, ein Webprojekt in Eclipse zu haben, bei dem der WebContents-Ordner aus mehreren Projekten zusammengeführt wird, anstatt nur aus einem einzigen dynamischen Webprojekt.

Wenn ich "a.jsp" in Projekt A und "b.jsp" in Projekt B habe, möchte ich am Ende eine einzige Webanwendung im Webcontainer haben, bei der "a.jsp" und "b.jsp" nebeneinander im selben Ordner liegen. Es wäre perfekt, wenn alle Dateien, nicht nur die jsp-Dateien, wie folgt zusammengeführt werden könnten.

Wir wollen eine Kernversion unserer Anwendung haben, aber auch in der Lage sein, kundenspezifische Änderungen problemlos durchzuführen.

Ich weiß, ich kann dies mit geeigneten Ant Magie zu tun, aber wir wollen etwas, das gut für unsere aktuelle Eclipse-basierten Entwicklungsprozess funktioniert haben. Wir werden JSR-330 Dependency Injection auf Java-Klassen verwenden, und im Wesentlichen möchte ich etwas ähnlich wie Dependency Injection, aber nur für jede Ressource und nicht nur Klassen.

Kann Eclipse dies tun?

Wenn Eclipse das nicht kann, wäre eine EAR-Bereitstellung vielleicht geeignet? Ich habe derzeit nur Erfahrung mit WARs.

1voto

Pascal Thivent Punkte 548176

Wenn die Verwendung von Maven eine Option ist, dann sollte Maven überlagert wäre hier perfekt und sollte theoretisch vom m2eclipse-Plugin unterstützt werden. Aber ich habe keine Erfahrung damit und es könnte einige Probleme geben (siehe MNGECLIPSE-599 ), so dass dies einige Tests erfordern würde.

Dennoch sind die Kommentare von MNGECLIPSE-599 sind ziemlich interessant, vor allem dieser hier:

Hat jemand Interesse an dieser Ausgabe? Unser gesamtes Team hat zu Netbeans für WAR-Entwicklung wegen dieser bewegt. Wir warten im Grunde auf Servlet 3.0, um dieses Problem für uns zu lösen (Servlet 3.0 würde effektiv unsere Notwendigkeit, Overlays in Maven zu tun negieren) Unser Unternehmen ist groß auf die Reduzierung von Copy-Paste, so dass wir Overlays verwenden, um WAR-Medien zu verwalten, die in unseren Anwendungen gemeinsam sein müssen.

Wie Java EE 6 Overlays überflüssig machen würde, ist mir nicht ganz klar (durch Web-Fragmente?), aber Tatsache ist, dass Die Veröffentlichung von Eclipse WTP mit Java EE 6-Unterstützung wurde verschoben auf Juni 2010 . Bis dahin benötigen Sie also zusätzliche Werkzeuge (z. B. Maven-Overlays) oder sollten den Wechsel zu NetBeans in Betracht ziehen.

0 Stimmen

Maven ist keine Option, es sei denn, wir müssen es unbedingt und unvermeidlich tun. Wir lassen uns nicht von der Maven-Lebensweise verführen :) Der Grund für JEE6 ist, dass wir den Web Service Stack, Dependency Injections und JSF 2.0 in den Container verlagern möchten, anstatt geeignete Implementierungen innerhalb der WAR zu implementieren. Nach meinen heutigen Untersuchungen glaube ich nicht, dass die Zeit dafür schon reif ist.

0 Stimmen

Danke für die Erwähnung von Servlet 3.0, um etwas zu beheben. Ich werde es mir ansehen.

0 Stimmen

Wir sind auf Maven umgestiegen und haben am Ende genau das getan. Danke.

1voto

Stijn Geukens Punkte 15139

Ich hatte einen ähnlichen Anwendungsfall, den ich erfolgreich gelöst habe, indem ich (wie von Pascal vorgeschlagen) Maven verwendet habe. Ich habe ein Root-Webprojekt (das auch eigenständig funktioniert) und für jeden Client habe ich ein separates Webprojekt, das so konfiguriert ist, dass es das Root-Webprojekt überlagert. Da jeder Kunde mehrere Umgebungen hat, habe ich außerdem für jede Umgebung (test, prod, local, ...) ein Maven-Profil erstellt. Ich habe dies ein wenig dokumentiert, wenn Sie also daran interessiert sind, kann ich Ihnen die Dokumentation gerne zuschicken.

0 Stimmen

Ich würde vorschlagen, dass Sie es in einem Blog schreiben. Das ist etwas, das jedes nicht-triviale Projekt beherrschen muss.

0 Stimmen

Gute Idee, gibt es Vorschläge für einen Community/Maven-Blog, den ich nutzen kann?

0voto

Bozho Punkte 570413
  • müssen Sie Ihren "eclipse-basierten Entwicklungsprozess" nicht ändern, um Ant zu verwenden. Registrieren Sie einfach einen Ant-Builder ( right click project > Properties > Builders ) und integrieren Sie das Ameisenskript in Ihren Eclipse-Prozess
  • können Sie die Multimodul-Optionen von Maven verwenden. (Das Maven-Plugin für Eclipse ist ebenfalls sehr gut)
  • verwenden können auch FileSync - nicht dem Industriestandard entsprechend, aber ziemlich leistungsfähig. Es wird verwendet für die Entwicklung auf localhost natürlich.

Hier finden Sie einige Tipps zur Verwendung von FileSync:

  • einrichten, welche Dateien/Dateimuster/Verzeichnisse in ein Zielverzeichnis kopiert werden sollen (Tomcat's webapps/application in Ihrem Fall). Sobald Sie also auf "Speichern" klicken, werden die Dateien kopiert.
  • machen alle absoluten Pfade in der FileSync.xxxx.prefs relativ durch die Einführung einer Linked Resource ( preferences > workspace > linked resources ), und die Verwendung der Link-Ressourcenvariable in der Prefs-Datei (nennen wir sie WEBAPP_HOME )
  • verpflichten die FileSync.xxxx.prefs file
  • jeden Entwickler im Team anweisen, die WEBAPP_HOME variabel. Somit gilt die Einstellung nicht nur für eine Maschine, sondern für alle Maschinen im Team.

0 Stimmen

Haben Sie Erfahrung mit einem Ant-Builder bei der Entwicklung von Webanwendungen? Wir verwenden derzeit Tomcat, aber aus JSR-330-Gründen erwägen wir, auf Glassfish umzusteigen. Ich bin besonders an der Bearbeitungszeit interessiert - drücken Sie Strg-S, und laden Sie im Browser neu.

0 Stimmen

Ich habe Erfahrung mit Maven und mit der neu hinzugefügten Option - FileSync. Ich verwende Maven für die Erstellung eines Builds und FileSync für CTRL + S Sachen. Es ist ziemlich leistungsfähig - Sie konfigurieren es einfach, um Dateien aus jedem Projekt in ein gemeinsames Zielverzeichnis zu verschieben.

0voto

user3296707 Punkte 46

Ich empfehle die Verwendung der Servlet 3.0-Funktion "Ressourcen in gebündelten Jar-Dateien". Mit dieser Funktion können Sie Web-Ressourcen (html/xhtml/css/js/jpg/etc) in Jar-Dateien einbinden (natürlich zusammen mit Java-Klassendateien) und der Webserver durchsucht die "META-INF/resources"-Ordner der Jars nach den Ressourcen.

Weitere Einzelheiten finden Sie hier:

http://alvinjayreyes.com/2013/07/28/servlet-3-0/

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X