在maven WAR构建中添加其他类

时间:2013-02-06 14:23:27

标签: maven maven-3 war

我目前正在使用带有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>

这个问题与:

有关

2 个答案:

答案 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>
相关问题