Maven (Java EE, WAR) Eigener Buildschritt - Manipulation von Dateien

MrFox

Mitglied
Liebe Java-Community,

ich habe für eine Java-EE Anwendung, die am Ende des Builds in ein WAR gepackt wird, ein Übersetzungssystem geschrieben. Dieses manipuliert u.a. während dem Build einige XHTML-Dateien des Projekts. Dies geschieht über ein selbst geschriebenes Maven-Plugin. Das Problem ist nun, dass es mir nicht gelingt, diese Manipulationen vernünftig in den Build-Prozess zu integrieren.
Wichtig ist: Die Manipulation soll nur im deployten Code vorliegen, die Working Copy des Entwicklers soll unberührt bleiben.
Ich schildere meine Lösungsansätze und die dabei auftretenden Probleme:

0. Nach dem das Maven-War-Plugin das /target-Verzeichnis zusammengestellt hat und bevor dieses Verzeichnis in das WAR gepackt wird, die Daten manipulieren. Problem: Maven erlaubt nicht, sich an dieser Stelle in den Prozess reinzuklinken.

1. Maven ein anderes Quellcodeverzeichnis angeben, und die Daten vor dem Build aus dem Quellcodeverzeichnis des Entwicklers dorthin kopieren. Während des Kopierens die Manipulationen vornehmen. Problem: Die verwendete IDE Netbeans nimmt dann das alternative Quellcodeverzeichnis als Root und zeigt nur die manipulierten Daten an.

2. Für die Zeit des Builds die originalen Quelldateiem irgendwo sichern und im Quellcodeverzeichnis alles manipulieren. Nach dem Build die Originaldaten zurückkopieren. Problem: Sehr unsauber, kann früher oder später zu Datenverlust wegen Abbruch des Builds und sehr wütenden Kollegen führen.

3. Nach dem Zusammenbau des WAR das Archiv auspacken, Manipulationen vornehmen und das Archiv wieder zusammenpacken. Problem: Maven weigert sich dann, den Schritt install oder deploy auszuführen mit dem Fehler: The packaging for this project did not assign a file to the build artifact.

4. Es muss doch möglich sein, bei einem solch komplexen Buildsystem wie Maven, sich irgendwie vernünftig in den Build-Prozess mit reinzuhängen, auch wenn man Quellcode manipulieren will...

Vielen Dank für Eure Hilfe!
 

kama

Top Contributor
Erste Frage: In welcher Art manipuliert Dein Plugin die Dateien? Inhalte ersetzen ? Abgesehen davon werden EE Anwendung in EAR's verpackt...weiterhin gibt es die Life Cycle Phase: prepare-package in der man solche Dinge machen kann...
Anderes Quellverzeichnis angeben verletzt Convention over Configuration...Im target Ordner kann man Sachen ablegen die geändert wurden. Im Quellverzeichnis ändert man niemals da die in der Versionskontrolle eingecheckt sind...
 

MrFox

Mitglied
Hey, ja das Manipulieren ist Bearbeiten im Sinne von Inhalte ersetzen.
Unsere EE-Anwendung wird in ein WAR verpackt.
Es ist sehr schön, dass du mir auch nochmal runterbetest, dass meine Lösungsansätze nicht funktionieren, aber ich dachte, dass hätte ich selber schon klargemacht, dass die Ansätze nicht funktionieren.
Tatsächlich habe ich eine Lösung gefunden. Die Phase prepare-package alleine tut's nicht. Den das target-Verzeichnis wird erst im Schritt package befüllt. Aber es geht wie folgt:
1. In prepare-package zunächst manuell einen Buildschritt einfügen, der das WAR baut (und damit auch target befüllt)
2. Als ersten Schritt in package meinen eigenen Manipulationscode ausführen (der Daten im target-Verzeichnis ändert)
3. Als zweiten Schritt in package nochmal das WAR zusammenbauen, dabei aber mit dem Konfigurationstag
<warSourceExcludes>**/*</warSourceExcludes> dafür sorgen, dass das target-Verzeichnis nicht erneut befüllt wird (was ja meine Änderungen überschreiben würde)
 

kama

Top Contributor
Anscheinend bist Du nicht daran interessiert wie man es richtig macht. Doppelte Ausführung des war-plugins macht keinen Sinn. Die "Lösung" ist keine Lösung sonder ein Hack.
Abgesehen davon gibt es für das Erstzen in Maven schon eine Lösung, die nennt sich "Filtering"...dafür braucht man kein eigenes Plugin.

Weiterhin kommt es mir sehr komisch vor, dass Du damit dann einen Artefakt erzeugt der lokal anders aussieht (bzw. anderen Inhalt hat) als der der deployed wird, sprich in ein Remote repository übertragen wird...
 

MrFox

Mitglied
Doch in bin sehr daran interessiert, wie man es noch besser macht. Ob die doppelte Ausführung nun Sinn macht oder nicht sei dahingestellt, sie funktioniert auf jeden Fall ohne Nachteile. Ich sehe momentan keine bessere Möglichkeit, welche siehst du?

Also die Manipulationen sind nichttrivial (XML parsen, bestimmte Elemente ändern usw.) und müssen auf jeden Fall aus meinem Maven-Plugin heraus gemacht werden. Das ist feste Rahmenbedingung.

Deine letzte Anmerkung verstehe ich nicht ganz. Beziehst du dich auf Möglichkeit Nummer 3) ?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Maven NetBeans Java Application ohne Manifest-Datei Tools - Maven, Gradle, Ant & mehr 7
B Kleines Werkzeug zum Anzeigen von Mehrfachvererbung mit Interfaces in Java Tools - Maven, Gradle, Ant & mehr 5
D Java Programm veröffentlichen am Besten modular Tools - Maven, Gradle, Ant & mehr 28
H Maven Verbindung Java Projekt und Jenkins Build job Tools - Maven, Gradle, Ant & mehr 21
Q Java Eclipse Fehlermeldung bei Installation Tools - Maven, Gradle, Ant & mehr 3
D Maven Abhängigkeiten überprüfen auf Kompatibilität mit einer anderen Java-Version Tools - Maven, Gradle, Ant & mehr 11
R Webstart Java 11 ohne Web Start Tools - Maven, Gradle, Ant & mehr 5
M Java mit Modulen kompilieren klappt nicht Tools - Maven, Gradle, Ant & mehr 9
R Java mitnehmen Tools - Maven, Gradle, Ant & mehr 14
W Java on Cloud - which Provider Tools - Maven, Gradle, Ant & mehr 0
S Python-Code mit Java ausführen Tools - Maven, Gradle, Ant & mehr 13
B Java auf Smartcards?! Tools - Maven, Gradle, Ant & mehr 9
J Java App im Mac Store veröffentlichen Tools - Maven, Gradle, Ant & mehr 0
VfL_Freak Desktopverknüpfung über den Java-Cache erstellen Tools - Maven, Gradle, Ant & mehr 0
S New version released: Java Switcher for 1.8.0_112 and Windows x64 only Tools - Maven, Gradle, Ant & mehr 4
S Java 32 Bit and 64 Bit Switcher for Windows XX [64 Bit only] Tools - Maven, Gradle, Ant & mehr 0
F java.lang.ClassNotFoundException auf anderem Rechner Tools - Maven, Gradle, Ant & mehr 0
S Applet Java Testen - Ergebnis wird nicht angezeigt, nur leeres Feld Tools - Maven, Gradle, Ant & mehr 15
T Java Applikation an Clients verteilen Tools - Maven, Gradle, Ant & mehr 5
S Java Web Start wird nicht ausgeführt Tools - Maven, Gradle, Ant & mehr 1
J Applet Java fragt Verzeichnis ab Tools - Maven, Gradle, Ant & mehr 0
J Applet .java.policy und neue Javaversion Tools - Maven, Gradle, Ant & mehr 4
R Maven woher gewusst, dass mein Java-Code commons-lang braucht? Tools - Maven, Gradle, Ant & mehr 0
O Applet Selbstsignierte Applets in Java 7 Update 51 Tools - Maven, Gradle, Ant & mehr 19
M Was muss man installiert haben damit Java Applets im Browser gehen Tools - Maven, Gradle, Ant & mehr 2
T ClassNotFound erfordert ständiges Löschen des Java-Cache. Tools - Maven, Gradle, Ant & mehr 2
P Applet Java Applet läuft im Browser nicht mehr (HTTPClient - NoClassDefFoundError) Tools - Maven, Gradle, Ant & mehr 3
B Webstart Java Webstart hängt sich beim Laden auf! Tools - Maven, Gradle, Ant & mehr 8
T Daten per POST-Methode aus Java-Applet nach php-Script senden Tools - Maven, Gradle, Ant & mehr 3
ChrisX Java im Autostart sinnvoll? Tools - Maven, Gradle, Ant & mehr 4
HaukeG Maven Java Web-Application in Eclipse - Abhängigkeiten zwischen den Projekten Tools - Maven, Gradle, Ant & mehr 10
F [Java Webstart] Webspace gesucht... Tools - Maven, Gradle, Ant & mehr 6
M Java Application startet bei verschiedenen JRE's nicht Tools - Maven, Gradle, Ant & mehr 7
B Wie kann man unter Windows 7 file types mit Java Applikationen verknüpfen? Tools - Maven, Gradle, Ant & mehr 5
D Java mit .bat starten Tools - Maven, Gradle, Ant & mehr 1
S Java Applikation als Windows Service einrichten Tools - Maven, Gradle, Ant & mehr 23
C Aufruf eines Java Programms mittels ant MIT Parametern Tools - Maven, Gradle, Ant & mehr 2
P Java Applikation auf Server Tools - Maven, Gradle, Ant & mehr 7
schlingel Applet Java-Sicherheitswarnung wegen alter JRE-Version Tools - Maven, Gradle, Ant & mehr 13
S Applet Applet mit C# öffnen: java.lang.SecurityException: Permission denied (WinXP) Tools - Maven, Gradle, Ant & mehr 8
W CVS Keine Verbindung zu cvs.dev.java.net möglich Tools - Maven, Gradle, Ant & mehr 5
E Java Applet bearbeiten Tools - Maven, Gradle, Ant & mehr 8
J Webstart Grenzen von Java Webstart? Tools - Maven, Gradle, Ant & mehr 2
B Buckminster: Plugin Version in Java source File einfügen Tools - Maven, Gradle, Ant & mehr 4
T Ant ant-variable aus Java Tools - Maven, Gradle, Ant & mehr 4
F Ant ANT javac class-Dateien von entfernten JAVA-Klassen löschen Tools - Maven, Gradle, Ant & mehr 11
J Java Webstart beschleunigen und Verlauf anzeigen Tools - Maven, Gradle, Ant & mehr 3
H Java Applet Problem beim einbinden in HTML Tools - Maven, Gradle, Ant & mehr 3
L PHP + Java Applet Kommunikation Tools - Maven, Gradle, Ant & mehr 9
S Probleme mit Kombination Java JApplet;MySQL;Webserver Tools - Maven, Gradle, Ant & mehr 3
nabla Einbinden von externen Java und C Bibliotheken Tools - Maven, Gradle, Ant & mehr 5
G Java-Applet Probleme beim Browser Tools - Maven, Gradle, Ant & mehr 14
A Java-Applet Sandbox deaktiviren? Tools - Maven, Gradle, Ant & mehr 2
B Java-Applet geht nicht (auf dem Webserver) Tools - Maven, Gradle, Ant & mehr 9
I In Java Applets drucken Tools - Maven, Gradle, Ant & mehr 2
D Java Webstart startet .jar file nicht Tools - Maven, Gradle, Ant & mehr 13
S Java Applet per Klick starten? Tools - Maven, Gradle, Ant & mehr 6
U Java Webstartproblem ab Version 1.6_11 Tools - Maven, Gradle, Ant & mehr 7
S Java Ant per Console starten Tools - Maven, Gradle, Ant & mehr 3
M Java Applet - enforce use of older JRE Tools - Maven, Gradle, Ant & mehr 3
N Wie Java-Programm zu Applet machen?! Tools - Maven, Gradle, Ant & mehr 2
M Java Swing Anwendung als Webanwendung Tools - Maven, Gradle, Ant & mehr 6
Raidri Java Programme installieren Tools - Maven, Gradle, Ant & mehr 5
S Java Webstart Tools - Maven, Gradle, Ant & mehr 3
V applet Java 1.6 -> 1.5 Problem ... wie mit Ant zu lösen? Tools - Maven, Gradle, Ant & mehr 7
E Java Applet - Double Buffering Problem (Flackern) Tools - Maven, Gradle, Ant & mehr 6
S Java-Applet Steuerung IO Karte am Drucker-Port Tools - Maven, Gradle, Ant & mehr 4
T Java Anwendung installieren Tools - Maven, Gradle, Ant & mehr 7
T Statistiken zur Verbreitung von Java Tools - Maven, Gradle, Ant & mehr 5
D Java-Anwendung mit Bildern (JPG) verfügbar machen Tools - Maven, Gradle, Ant & mehr 7
F Kleines Java-Programm geschrieben, 30 Dateien? Tools - Maven, Gradle, Ant & mehr 16
T Applet soll Java Programm starten Tools - Maven, Gradle, Ant & mehr 2
P Java-Applet funktioniert unter WINXP nicht Tools - Maven, Gradle, Ant & mehr 2
N Java 1.6 Applet auf älteren Versionen ausführbar? Tools - Maven, Gradle, Ant & mehr 4
F Probleme mit Java WebStart; Hauptklasse konnte nicht gef. Tools - Maven, Gradle, Ant & mehr 18
J Java Applet bei mouseover mit Tooltip Tools - Maven, Gradle, Ant & mehr 3
M Autostart unter Windows für Java Aplikation Tools - Maven, Gradle, Ant & mehr 10
J ANT: run/java: NoClassDefFoundError Tools - Maven, Gradle, Ant & mehr 2
C chatProgramm in java Tools - Maven, Gradle, Ant & mehr 5
L Java Webstart Tools - Maven, Gradle, Ant & mehr 6
B Java-Applet startet nicht aus dem Browser Tools - Maven, Gradle, Ant & mehr 1
K Java-Applet Uhrzeit Tools - Maven, Gradle, Ant & mehr 2
T Java Applett: Rückwärtskompabilität Tools - Maven, Gradle, Ant & mehr 2
G JApplet parallel zu Java-Applikation entwickeln Tools - Maven, Gradle, Ant & mehr 11
H [gelöst] Java Stimmgerät bzw. Frequenzerzeugung gesucht Tools - Maven, Gradle, Ant & mehr 2
A RSS-Feeds auslesen mit JAVA speichern und Applet übergeben Tools - Maven, Gradle, Ant & mehr 2
D Java Web Start im Browser laufen lassen Tools - Maven, Gradle, Ant & mehr 10
W Java-Applet Funzt ned! Tools - Maven, Gradle, Ant & mehr 3
V dreieck ausfüllen (java) Tools - Maven, Gradle, Ant & mehr 6
M Java Security Tools - Maven, Gradle, Ant & mehr 2
B Java Applet im Systemtray Tools - Maven, Gradle, Ant & mehr 2
P Java Applets und Power Point Tools - Maven, Gradle, Ant & mehr 11
G Jar File Java Web Start Tools - Maven, Gradle, Ant & mehr 2
H Java 1.4 Applet, IE 6 und Java 6 funktioniert nicht zusammen Tools - Maven, Gradle, Ant & mehr 2
B Jukebox mit Java [Html Applet] Tools - Maven, Gradle, Ant & mehr 11
J Gästebuch mit Java Tools - Maven, Gradle, Ant & mehr 11
A Hilfe! Java Applet Lake von Anfy - wie in HP einbinden? Tools - Maven, Gradle, Ant & mehr 25
S bilder mit java beschreiben? Tools - Maven, Gradle, Ant & mehr 8
G rotierende Bilder im Java Applet Tools - Maven, Gradle, Ant & mehr 3
M Browser Fehler bei Applet: java.security.AccessControl. Tools - Maven, Gradle, Ant & mehr 6

Ähnliche Java Themen

Neue Themen


Oben