Je souhaite conserver le fichier context.xml de Tomcat dans le répertoire META-INF de mon fichier WAR, si possible. Cela peut-il être fait avec le plugin cargo de Maven? Je n'arrive pas à trouver la configuration correcte.Est-il possible de fournir le fichier context.xml de Tomcat6 via le plugin Maven Cargo?
Répondre
Eureka! Après plusieurs jours d'étude de ce problème, j'ai finalement trouvé une solution très efficace. La clé est de prendre votre fichier de fragment de contexte XML Tomcat et d'utiliser l'élément de fret <configfiles>
pour le déposer dans le répertoire conf/Catalina/localhost
sous le nom context.xml.default
. Le seul inconvénient est que cela rendra vos définitions de contexte disponibles pour toutes les applications Web, mais cela ne devrait pas vraiment importer seulement Cargo utilise cette instance de Tomcat, il n'y a donc pas d'autre application web.
est ici la configuration:
<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>
Le résultat net est de modules WAR plus faux pour tester uniquement, et pas plus fusion de WARs. J'espère que cela aide quelqu'un.
Je n'ai pas encore trouvé le moyen de le faire, mais j'ai trouvé un travail qui fonctionne dans mon projet. J'ai actuellement un projet essentiellement 3 sous-modules:
dependencies
webapp
smoketest
Lorsque je construis le projet « webapp », j'exécute la déclaration de plugin suivante:
<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>
Et puis quand je suis en mon Cargo/WebTest suite dans le projet SmokeTest, je précise le SmokeTest fichier WAR en tant que dépendance et dans ma configuration de la cargaison et mes deployrables ainsi:
<deployables>
<deployable>
<groupId>${pom.groupId}</groupId>
<artifactId>webapp</artifactId>
<type>war</type>
<properties>
<context>smoketest</context>
</properties>
</deployable>
</deployables>
Avec la dépendance l ooking quelque chose comme:
<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>
C'est extrêmement sale, mais ça marche au moins ... pour l'instant. Une note rapide: mon commentaire sur le forcer à ne jamais chercher une version dans le repo est peut-être incorrect à ce stade; Je pense que cette astuce peut avoir été cassée par une modification du plugin de dépendance à un moment donné.
Moi aussi, j'ai essayé - et ça marche aussi pour moi. J'espérais juste me passer de l'artefact de WAR, car nous ne voulons pas/ne pouvons pas envoyer de WAR avec un fichier context.xml filtré. – HDave
Cela a fonctionné à l'exception du fait que la cargaison 1.1.1 semble ne pas ajouter de nouveaux fichiers. J'étais seulement capable de remplacer les fichiers. – Ralph