1

私は多くのことを試しましたが、私のプロジェクトは "maven-war-plugin" を 2 回実行しているようです。

このため、すべてのクラスを 1 つの jar にマージするような最適化を実行できません (Maven シェード プラグインを使用)。

appengine-maven-plugin が maven-war-plugin を呼び出して appengine パッケージを作成していることは確かです。「maven-war-plugin」の独自の定義を削除しようとしたため、それはまだ「魔法のように」実行されているためです。そんな状態になっても意味ないの?

私の pom.xml は次のとおりです。

 <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.3</version>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>war</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
                <webResources>
                    <!-- in order to interpolate version from pom into appengine-web.xml -->
                    <resource>
                        <directory>${basedir}/src/main/webapp/WEB-INF</directory>
                        <filtering>true</filtering>
                        <excludes>
                            <exclude>**/*.jar</exclude>
                        </excludes>
                        <targetPath>WEB-INF</targetPath>
                    </resource>
                </webResources>
            </configuration>
        </plugin>   

        <plugin>
            <groupId>com.google.appengine</groupId>
            <artifactId>appengine-maven-plugin</artifactId>
            <version>${appengine.target.version}</version>                              
            <configuration>     
                <useJava7>true</useJava7>
                <address>0.0.0.0</address>
                <port>8080</port>
                <compileEncoding>utf-8</compileEncoding>

                <jvmFlags>
                    <jvmFlag>-XX:-UseSplitVerifier</jvmFlag>
                    <jvmFlag>-Xms512m</jvmFlag>
                    <jvmFlag>-Xmx2048m</jvmFlag>
                    <jvmFlag>-XX:NewSize=256m</jvmFlag>
                    <jvmFlag>-XX:MaxNewSize=256m</jvmFlag>
                    <jvmFlag>-XX:PermSize=512m</jvmFlag>
                    <jvmFlag>-XX:MaxPermSize=768m</jvmFlag>
                    <jvmFlag>-Xdebug</jvmFlag>
                    <jvmFlag>-agentlib:jdwp=transport=dt_socket,address=31337,server=y,suspend=n</jvmFlag>
                </jvmFlags>                
            </configuration>
        </plugin>
4

1 に答える 1

0

war プラグインを明示的に 2 回実行しているようです。そのプラグインの実行セクションで別の実行が宣言されています。appengine-maven-plugin は、パッケージ フェーズが完了している必要があることを宣言するだけです。パッケージング中に何が起こるかは気にしません。

これを行う方法の良い例を次に示します

これが役立つことを願っています。

于 2013-07-10T23:21:45.287 に答える