7

我正在使用谷歌应用引擎来构建战争,我注意到每当我进行本地更改时,当我在本地运行时它们永远不会被应用。我发现查看我所做更改的唯一方法是运行 a mvn clean,然后制作,然后构建工件,然后部署。这是显示我的配置的屏幕截图:

配置

如果我遗漏了这些步骤中的任何一个,重新启动服务器不会显示我所做的任何更改。我之前用 intellij 制作了许多非谷歌应用引擎 webapps,我通常不需要这样做。我怎样才能避免所有这些步骤?它们大大增加了重新启动服务器所需的时间。

如果有帮助,这是我的 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 文件,即由 clean (delete) 完成并重新创建。

您应该考虑使用 .war 展开的人工制品,以便 IntelliJ 可以更新所需的类/jar 文件,而无需重新创建整个 war 文件。但是我在您的屏幕截图中看到您已经在使用战争爆炸的人工制品,也许问题是您正在尝试更新正在使用的 jar 文件。

于 2013-12-24T07:19:55.110 回答
0

您可以使用按钮组合进行部分热部署尝试:CTRL + SHIFT + F9 组合。

于 2013-12-23T09:21:07.067 回答