Я хотел бы сохранить файл context.xml Tomcat из каталога META-INF моего WAR-файла, если это возможно. Можно ли это сделать с грузовым плагином Maven? Я не могу найти правильную конфигурацию.Возможно ли предоставить файл context.xml Tomcat6 через плагин Maven Cargo?
ответ
Eureka! После многих дней изучения этой проблемы я наконец нашел очень эффективное решение. Ключ должен взять ваш файл фрагмента контекста XML Tomcat и использовать элемент груза <configfiles>
для его отправки в каталог conf/Catalina/localhost
с именем context.xml.default
. Единственным недостатком является то, что это сделает ваши определения контекста доступными для всех веб-приложений, но это не имеет особого значения, только Cargo использует этот экземпляр Tomcat, поэтому нет другого веб-приложения.
Вот конфигурация:
<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>
Конечный результат является не более фиктивными WAR модулей для тестирования только, и не более сращивания войн. Надеюсь, это поможет кому-то.
Я еще не нашел способ сделать это, но у меня есть работа, которая работает в моем проекте. Я в настоящее время проекта по существу с 3 подмодулями:
dependencies
webapp
smoketest
Когда я строй проекта «WebAPP», я выполнить следующий плагин заявление:
<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>
А потом, когда я работаю мой Груз/WebTest люкс в проекте SmokeTest, я указать smoketest файла WAR в качестве зависимости и в моей конфигурации Грузовой установить мои deployrables таким образом:
<deployables>
<deployable>
<groupId>${pom.groupId}</groupId>
<artifactId>webapp</artifactId>
<type>war</type>
<properties>
<context>smoketest</context>
</properties>
</deployable>
</deployables>
с зависимостями л что-то вроде:
<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>
Это очень грязно, но оно хотя бы работает ... пока. Одно быстрое замечание: мой комментарий о принуждении его никогда не искать версию в репо, возможно, неверен на данный момент; Я думаю, что этот трюк, возможно, был нарушен изменением плагина зависимостей в какой-то момент.
Я тоже пробовал это - и он работает и на меня. Просто надеялся отказаться от отброшенного артефакта WAR - так как мы не хотим/не можем отправить WAR с фильтрованным файлом context.xml в нем. – HDave 2010-11-30 03:08:09
Он работал, за исключением того, что груз 1.1.1 швов не добавлял новые файлы. Я мог только заменить файлы. – Ralph 2011-06-24 13:34:24