7

Google App Engine を使用して戦争を構築していますが、ローカルで変更を加えるたびに、ローカルで実行すると適用されないことに気付きました。行った変更を確認する唯一の方法は、 を実行してからmvn clean作成し、アーティファクトをビルドしてからデプロイすることであることがわかりました。私の設定を示すスクリーンショットは次のとおりです。

構成

これらの手順のいずれかが欠けている場合、サーバーを再起動しても、行った変更が表示されません。以前に intellij を使用して Google 以外のアプリ エンジンの Web アプリを多数作成しましたが、通常はこれを行う必要はありません。これらすべての手順を回避するにはどうすればよいですか? サーバーの再起動にかかる時間が大幅に増加します。

それが役立つ場合は、これが私の pom.xml ファイルです。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <packaging>war</packaging>
    <version>1.0-SNAPSHOT</version>

    <groupId>com.myapp</groupId>
    <artifactId>myapp</artifactId>

    <properties>
        <appengine.app.version>1</appengine.app.version>
        <appengine.target.version>1.8.6</appengine.target.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <!-- Compile/runtime dependencies -->
        <dependency>
            <groupId>com.google.appengine</groupId>
            <artifactId>appengine-api-1.0-sdk</artifactId>
            <version>${appengine.target.version}</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>net.sourceforge.stripes</groupId>
            <artifactId>stripes</artifactId>
            <version>1.5.7</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.5</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-jdk14</artifactId>
            <version>1.7.5</version>
        </dependency>




        <dependency>
            <groupId>com.google.appengine</groupId>
            <artifactId>appengine-testing</artifactId>
            <version>${appengine.target.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.google.appengine</groupId>
            <artifactId>appengine-api-stubs</artifactId>
            <version>${appengine.target.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <version>2.5.1</version>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <archiveClasses>true</archiveClasses>
                    <webResources>
                        <!-- in order to interpolate version from pom into appengine-web.xml -->
                        <resource>
                            <directory>${basedir}/src/main/webapp/WEB-INF</directory>
                            <filtering>true</filtering>
                            <targetPath>WEB-INF</targetPath>
                        </resource>
                        <resource>
                            <directory>${basedir}/src/main/generated</directory>
                            <targetPath>src/main/generated</targetPath>
                        </resource>
                        <resource>
                            <directory>${basedir}/src/main/scripts/img</directory>
                            <targetPath>src/main/scripts/img</targetPath>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>

            <plugin>
                <groupId>com.google.appengine</groupId>
                <artifactId>appengine-maven-plugin</artifactId>
                <version>${appengine.target.version}</version>
            </plugin>
        </plugins>
    </build>

</project>
4

2 に答える 2

4

.war アーティファクトを使用している場合は、文字通り war ファイルを作成してから展開し、war ファイル内のコードを更新するために、IntelliJ は war ファイル全体を再作成する必要があるため、きれいにして作成する必要があります。クリーン(削除)してやり直してください。

IntelliJ が war ファイル全体を再作成しなくても必要なクラス/jar ファイルを更新できるように、.war 展開アーティファクトの使用を検討する必要があります。しかし、あなたのスクリーンショットを見ると、すでに戦争で爆発したアーティファクトを使用していることがわかります。おそらく問題は、使用されている jar ファイルを更新しようとしていることです。

于 2013-12-24T07:19:55.110 に答える
0

部分的なホット デプロイの試行にはボタンの組み合わせを使用できます: CTRL + SHIFT + F9 の組み合わせ。

于 2013-12-23T09:21:07.067 に答える