Ich möchte die Datei context.xml von Tomcat wenn möglich aus dem META-INF-Verzeichnis meiner WAR-Datei entfernen. Kann dies mit Mavens Cargo Plugin geschehen? Ich kann nicht die richtige Konfiguration finden.Ist es möglich, die Datei context.xml von Tomcat6 über das Maven Cargo Plugin zu liefern?
Antwort
Eureka! Nach vielen Tagen des Studiums dieses Problems fand ich schließlich eine sehr effektive Lösung. Der Schlüssel besteht darin, Ihre Tomcat-XML-Kontextfragmentdatei zu verwenden und das <configfiles>
Frachtelement zu verwenden, um es in das Verzeichnis conf/Catalina/localhost
mit dem Namen context.xml.default
zu löschen. Der einzige Nachteil ist, dass dies Ihre Kontextdefinitionen für alle Web-Apps verfügbar macht, aber das sollte nicht wirklich wichtig sein. Cargo verwendet diese Tomcat-Instanz, daher gibt es keine andere Web-App.
Hier ist die Konfiguration:
<configuration> <!-- Deployer configuration -->
<type>standalone</type>
<properties>
<cargo.servlet.port>${tomcat6.port}</cargo.servlet.port>
</properties>
<deployables>
<deployable>
<groupId>com.myapp<groupId>
<artifactId>myapp-war</artifactId>
<type>war</type>
<properties>
<context>${tomcat6.context}</context>
</properties>
</deployable>
</deployables>
<configfiles>
<configfile>
<file>${basedir}/../config/tomcat-context.xml</file>
<todir>conf/Catalina/localhost/</todir>
<tofile>context.xml.default</tofile>
</configfile>
</configfiles>
</configuration>
Das Nettoergebnis ist nicht mehr gefälschte WAR-Module für nur testen und nicht mehr Zusammenführung von WARs. Hoffe das hilft jemandem.
Ich habe noch keinen Weg gefunden, dies zu tun, aber ich habe eine Arbeit gefunden, die in meinem Projekt funktioniert. Ich habe derzeit ein Projekt mit im Wesentlichen drei Submodule:
dependencies
webapp
smoketest
Als ich das „Webapp“ Projekt baute, führe ich die folgende Plugin-Deklaration:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<executions>
<execution>
<id>create-war-smoketest</id>
<phase>verify</phase>
<goals>
<goal>war</goal>
</goals>
<configuration>
<webappDirectory>${project.build.directory}/exploded</webappDirectory>
<primaryArtifact>false</primaryArtifact>
<classifier>smoketest</classifier>
<webResources>
<resource>
<filtering>true</filtering>
<directory>src/test/resources/smoketest</directory>
<targetPath>META-INF</targetPath>
<includes>
<include>context.xml</include>
</includes>
</resource>
</webResources>
</configuration>
</execution>
</executions>
</plugin>
Und dann, wenn ich bin mit meiner Cargo/WebTest Suite im Projekt Smoketest, gebe ich das WAR-Datei Smoketest als Abhängigkeit und in meiner Frachtkonfiguration eingestellt meine deployrables thusly:
<deployables>
<deployable>
<groupId>${pom.groupId}</groupId>
<artifactId>webapp</artifactId>
<type>war</type>
<properties>
<context>smoketest</context>
</properties>
</deployable>
</deployables>
Mit der Abhängigkeit l ooking so etwas wie:
<dependencies>
<dependency>
<groupId>${pom.groupId}</groupId>
<artifactId>webapp</artifactId>
<version>${pom.version}</version>
<classifier>smoketest</classifier>
<type>war</type>
<scope>system</scope>
<!-- trick the dependency plugin to never look for it in the repo -->
<systemPath>${basedir}/../webapp/target/webapp-${pom.version}-smoketest.war</systemPath>
</dependency>
</dependencies>
Es ist extrem dreckig, aber es funktioniert zumindest ... für jetzt. Eine kurze Anmerkung: Mein Kommentar darüber, es zu zwingen, nie nach einer Version im Repo zu suchen, ist möglicherweise zu diesem Zeitpunkt falsch; Ich denke, dass dieser Trick durch eine Änderung des Abhängigkeits-Plugins irgendwann kaputt gegangen sein könnte.
Ich habe es auch versucht - und es funktioniert auch für mich. Ich habe nur gehofft, auf das Wegwerf-WAR-Artefakt verzichten zu können - da wir keine WAR mit einer gefilterten context.xml-Datei darin veröffentlichen wollen/können. – HDave
- 1. maven tomcat plugin oder cargo plugin?
- 2. Java | Maven - Plugins | Ist es empfehlenswert, Cargo Maven Plugin in der Produktionsumgebung zu verwenden?
- 3. Erweitern maven cargo plugins jvmargs
- 4. Ist es möglich, Abhängigkeiten in Maven-Plugin von p2 Repo
- 5. Theoretisch: Ist es möglich/möglich statische Inhalte über Websockets zu liefern?
- 6. Konfigurieren von GlassFish 4 Domänenverzeichnis in Netbeans/Maven/Cargo plugin
- 7. Maven WebApp META-INF context.xml
- 8. Maven und Cargo: Start-Jetty-Container mit Kriegs-Datei
- 9. Konfigurieren maven cargo plugin jetty container für statischen Inhalt
- 10. Erstellung von rpm mit einer JAR-Datei über Maven-Plugin
- 11. Ist es möglich das neue Facebook Page Plugin zu stylen?
- 12. Ist es möglich, zusätzliche Parameter mit httpify zu liefern?
- 13. Ist es möglich, 2 web.xml mit Maven Overlay zu verschmelzen
- 14. Ist es möglich, eine WordPress-Plugin-Zip-Datei von einem installierten Plugin zu erstellen?
- 15. Ist es möglich, das Herunterladen von Mavenartefakten zu beschleunigen?
- 16. In Maven ist es möglich, Dateien zu verkleinern, ohne sie in eine größere Datei zu packen?
- 17. Warum funktioniert das? JNDI, Tomcat6
- 18. Ist es möglich, nur eine Datei über grgit plugin for gradle zu committen?
- 19. Kriegsdatei von einem Maven Tomcat Plugin ausführen - benutzt das Plugin die falsche Datei?
- 20. Ist es möglich, über die Statusleiste in reaktionsnativ zu zeichnen?
- 21. Ist es möglich, Cargo Fetch-Abhängigkeiten von einem privaten Remote-Git zu haben?
- 22. Ist es möglich, eine FLA über die Befehlszeile zu veröffentlichen?
- 23. Ist es möglich, eine Datei in einer laufenden Instanz von Matlab über die Befehlszeile zu öffnen?
- 24. Ist es möglich, ein lokales Plugin als Schmuckstück zu installieren?
- 25. Context.xml-Datei von anderem Projekt lesen
- 26. Gibt es ein Maven Plugin, das den P2P-Modus unterstützt?
- 27. Ist es möglich, die Ausgabe über mehr Pipes zu färben?
- 28. Ist es möglich, über die Flink Python API zu loggen
- 29. Ist es möglich, die Telefonnummer über Google oAuth2 zu erhalten?
- 30. Ist es möglich, mehrere Hauptklassen mit dem 'plugin' Plugin '
Es funktionierte, abgesehen von der Tatsache, dass Fracht 1.1.1 Nähte keine neuen Dateien hinzufügen. Ich konnte nur Dateien ersetzen. – Ralph