我目前正在使用带有https://maven.apache.org/plugins/maven-war-plugin/的maven3和带有http://tomcat.apache.org/maven-plugin-2.0/的http://mojo.codehaus.org/build-helper-maven-plugin/来添加src/main/java
旁边的其他来源,例如src/mock/java
运行mvn tomcat7:run
这些附加类时,还会显示测试资源。
捆绑WAR(通过mvn package
)时,会排除这些虚假资源。
在大多数情况下这很好,因为战争束是我们发运的,并且正在prod服务器上部署。
问题1:但是:“假”类仍然在WAR构建中被授予对生产性WAR而言不干净的内容。
但还有另一个用例: 使用这些附加类和资源构建WAR文件,以便通过持续集成/部署(jenkins)在本地开发服务器上进行部署 这似乎很棘手......
问题2:当前的WAR有假类而不是假资源; /
问题:如何在正常构建中排除假类但是如何包含这些源以及WAR构建中的虚假资源?
这就是我的所作所为:
<testResources>
<testResource>
<directory>src/test/resources</directory>
</testResource>
<testResource>
<directory>src/mock/resources</directory>
</testResource>
</testResources>
…
… // plugins section
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>copy-resources-after-test</id>
<phase>prepare-package</phase>
<goals>
<goal>resources</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${project.basedir}/src/main/java-fake</source>
<source>${project.basedir}/src/mock/java</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
</configuration>
</plugin>
这个问题与:
有关答案 0 :(得分:1)
您应该使用不同的个人资料(请参阅http://maven.apache.org/guides/introduction/introduction-to-profiles.html)来构建您的战争。与您的虚假来源/资源的“持续集成”配置文件,以及没有它们的“生产”配置文件。
答案 1 :(得分:1)
我如何修理atm:
--- a/pom.xml
+++ b/pom.xml
@@ -20,5 +20,11 @@
<properties>
+
+ <!-- remove fake data for normal builds -->
+ <maven.war.warSourceExcludes>staticFakeFiles/</maven.war.warSourceExcludes>
+ <exclude.fake.resources>**</exclude.fake.resources>
+ <!-- set additional fake sources to default source directory to prevent NPE -->
+ <additional.fake-sources>${project.basedir}/src/mock/java</additional.fake-sources>
</properties>
<organization>
@@ -328,6 +334,13 @@
<exclude>application.wsdl</exclude>
</excludes>
</resource>
+ <resource>
+ <directory>src/mock/resources</directory>
+ <filtering>true</filtering>
+ <excludes>
+ <exclude>${exclude.fake.resources}</exclude>
+ </excludes>
+ </resource>
</resources>
<testResources>
<testResource>
@@ -382,7 +392,7 @@
</goals>
<configuration>
<sources>
<source>${project.basedir}/src/main/java-fake</source>
- <source>${project.basedir}/src/mock/java</source>
+ <source>${additional.fake-sources}</source>
</sources>
</configuration>
@@ -410,7 +420,7 @@
<version>2.2</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
- <warSourceExcludes>fakefiles/</warSourceExcludes>
+ <warSourceExcludes>${maven.war.warSourceExcludes}</warSourceExcludes>
</configuration>
</plugin>
@@ -1353,6 +1363,11 @@
<properties>
+
+ <!-- add fake data for fake builds -->
+ <maven.war.warSourceExcludes></maven.war.warSourceExcludes>
+ <exclude.fake.resources></exclude.fake.resources>
+ <additional.fake-sources>${project.basedir}/src/mock/java</additional.fake-sources>
</properties>
</profile>
<profile>