2

私は現在、https ://maven.apache.org/plugins/maven-war-plugin/とhttp://tomcat.apache.org/maven-plugin-2.0/http://mojo.codehausで maven3 を使用しています。 .org/build-helper-maven-plugin/の横に追加のソースを追加するにsrc/main/javasrc/mock/java

これらの追加クラスを実行mvn tomcat7:runすると、テスト リソースも存在します。(経由で) WAR をバンドルする場合mvn package、これらの偽のリソースは除外されます。ほとんどの場合、それで問題ありません。なぜなら、war バンドルは私たちが出荷するものであり、製品サーバーにデプロイされているからです。

問題 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>

この質問は次のものに関連しています。

4

2 に答える 2

1

war をビルドするには、さまざまなプロファイル ( http://maven.apache.org/guides/introduction/introduction-to-profiles.htmlを参照) を使用する必要があります。偽のソース/リソースを含む「継続的インテグレーション」プロファイルと、それらを含まない「本番」プロファイル。

于 2013-02-06T14:46:26.087 に答える
1

どのように私はそれを修正しました:

--- 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>
于 2013-02-06T15:53:21.937 に答える