gpt4 book ai didi

java - 在 Intellij 中,当我在本地运行 Google App Engine 时,为什么必须清理和构建 war 才能看到变化?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:30:22 26 4
gpt4 key购买 nike

我正在使用 google app engine 建立 war ,我注意到每当我进行本地更改时,当我在本地运行时它们永远不会应用。我发现要查看我所做的更改的唯一方法是运行 mvn clean,然后生成,然后构建 Artifact ,然后 部署。这是显示我的配置的屏幕截图:

configuration

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

如果有帮助,这是我的 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>

最佳答案

如果您使用的是 .war Artifact ,是的,您必须清理并制作,因为它实际上是在创建 war 文件然后部署,为了更新 war 文件中的代码,IntelliJ 必须重新创建整个 war通过清理(删除)完成的文件,然后重新制作。

您应该考虑使用 .war exploded artefact,这样 IntelliJ 就可以更新所需的类/jar 文件,而无需重新创建整个 war 文件。但是我在您的屏幕截图中看到您已经在使用 war exploded artefact,也许问题是您正在尝试更新正在使用的 jar 文件。

关于java - 在 Intellij 中,当我在本地运行 Google App Engine 时,为什么必须清理和构建 war 才能看到变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19821376/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com