Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何让maven和appengine在开发时进行热重新加载_Java_Maven_Google App Engine - Fatal编程技术网

Java 如何让maven和appengine在开发时进行热重新加载

Java 如何让maven和appengine在开发时进行热重新加载,java,maven,google-app-engine,Java,Maven,Google App Engine,我正试图将基于Java的appengine用于一个爱好项目,但在开发应用程序时,我无法使我的应用程序的热重新加载/交换正常工作。我试过好几种方法,但没有成功 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project> <modelVersion>4.0.0</modelVersion> <packaging>war</packaging> <versio

我正试图将基于Java的appengine用于一个爱好项目,但在开发应用程序时,我无法使我的应用程序的热重新加载/交换正常工作。我试过好几种方法,但没有成功

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project>
  <modelVersion>4.0.0</modelVersion>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>

  <groupId>grocerymonkey</groupId>
  <artifactId>grocerymonkeyapp</artifactId>

  <properties>
    <!-- uncomment if you wish to set your project here project- gcloud is used otherwise -->
    <!-- <app.deploy.project>your-app-id</app.deploy.project> -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <maven.compiler.showDeprecation>true</maven.compiler.showDeprecation>
    <archiveClasses>true</archiveClasses>
  </properties>

  <prerequisites>
    <maven>3.5</maven>
  </prerequisites>

  <dependencies>
    <!-- Compile/runtime dependencies -->
    <dependency>
      <groupId>com.google.appengine</groupId>
      <artifactId>appengine-api-1.0-sdk</artifactId>
      <version>1.9.59</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <type>jar</type>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>

    <!-- Test Dependencies -->
    <dependency>
      <groupId>com.google.appengine</groupId>
      <artifactId>appengine-testing</artifactId>
      <version>1.9.59</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.google.appengine</groupId>
      <artifactId>appengine-api-stubs</artifactId>
      <version>1.9.59</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>com.google.appengine</groupId>
      <artifactId>appengine-tools-sdk</artifactId>
      <version>1.9.59</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>com.google.truth</groupId>
      <artifactId>truth</artifactId>
      <version>0.33</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-all</artifactId>
      <version>2.0.2-beta</version>
      <scope>test</scope>
    </dependency>

        <dependency>
            <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
      <version>2.8.5</version>
      <scope>compile</scope>
        </dependency>
  </dependencies>

  <build>
    <!-- for hot reload of the web application-->
    <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory>
    <plugins>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>versions-maven-plugin</artifactId>
        <version>2.3</version>
        <executions>
          <execution>
            <phase>compile</phase>
            <goals>
              <goal>display-dependency-updates</goal>
              <goal>display-plugin-updates</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <excludes>
            <exclude>javax.servlet:javax.servlet-api</exclude>
            <exclude>com.google.guava:guava</exclude> <!-- avoid android version -->
          </excludes>
        </configuration>
      </plugin>

      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.1.0</version>
      </plugin>

      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.6.1</version>
      </plugin>

      <plugin>
        <artifactId>maven-clean-plugin</artifactId>
        <version>3.0.0</version>
      </plugin>

      <plugin>
        <artifactId>maven-install-plugin</artifactId>
        <version>2.5.2</version>
      </plugin>

      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.20</version>
      </plugin>

      <plugin>
        <artifactId>maven-site-plugin</artifactId>
        <version>3.6</version>
      </plugin>

      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.0.2</version>
      </plugin>

      <plugin>
        <artifactId>maven-deploy-plugin</artifactId>
        <version>3.1</version>
      </plugin>

      <plugin>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>1.4.1</version>
        <executions>
          <execution>
            <id>enforce-maven</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireMavenVersion>
                  <version>3.5</version>
                </requireMavenVersion>
                <requirePluginVersions>
                   <message>Best Practice is to always define plugin versions!</message>
                   <banLatest>true</banLatest>
                   <banRelease>true</banRelease>
                   <phases>clean,deploy,verify,appengine:run,appengine:deploy,appengine:update,appengine:devappaserver,site</phases>
                </requirePluginVersions>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>

            <!-- https://cloud.google.com/appengine/docs/standard/java/building-app/environment-setup //-->
            <plugin>
        <groupId>com.google.cloud.tools</groupId>
        <artifactId>appengine-maven-plugin</artifactId>
        <version>1.3.1</version>
      </plugin>

            <plugin>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <version>9.4.14.v20181114</version>
            </plugin>
    </plugins>
  </build>
</project>

4.0.0
战争
1.0-快照
杂货店
grocerymonkeyapp
UTF-8
UTF-8
1.8
1.8
符合事实的
符合事实的
3.5
com.google.appengine
appengine-api-1.0-sdk
1.9.59
javax.servlet
javax.servlet-api
3.1.0
罐子
假如
jstl
jstl
1.2
com.google.appengine
阿彭金试验
1.9.59
测验
com.google.appengine
appengine api存根
1.9.59
测验
com.google.appengine
appengine工具sdk
1.9.59
测验
com.google.truth
真相
0.33
测验
朱尼特
朱尼特
4.12
测验
org.mockito
莫基托所有
2.0.2-beta
测验
com.google.code.gson
格森
2.8.5
编写
${project.build.directory}/${project.build.finalName}/WEB-INF/classes
org.codehaus.mojo
版本maven插件
2.3
编写
显示依赖项更新
显示插件更新
servlet:javax.servlet-api
番石榴:番石榴
maven战争插件
3.1.0
maven编译器插件
3.6.1
maven清洁插件
3.0.0
maven安装插件
2.5.2
maven surefire插件
2.20
maven站点插件
3.6
maven资源插件
3.0.2
maven部署插件
3.1
maven enforcer插件
1.4.1
强制执行maven
执行
3.5
最佳实践是始终定义插件版本!
符合事实的
符合事实的
清理、部署、验证、appengine:运行、appengine:部署、appengine:更新、appengine:服务器、站点
com.google.cloud.tools
appengine maven插件
1.3.1
org.eclipse.jetty
jetty maven插件
9.4.14.v20181114
我无法使用mvh appengine:devserver,当我尝试时,会收到以下错误消息

在插件中找不到目标“devserver” com.google.cloud.tools:appenginemaven插件:1.3.1 目标部署、部署cron、部署调度、部署dos、部署索引、, deployQueue、genRepoInfoFile、帮助、运行、阶段、开始、停止->帮助 1]

我已经尝试将fullscanseconds设置为5或更少,但无论我是否更改HTML文件或servlet,我仍然必须停止服务器并使用mvn appengine:run手动重新启动它。这使得在本地开发任何东西都非常非常耗时。我也尝试过使用jetty,但失败了,然后我意识到appengine在本地测试时显然是在jetty上运行的

当我在开发时尝试使用jetty时,由于安全限制,我遇到了问题

web.xml

<security-constraint>
            <web-resource-collection>
                <url-pattern>/*</url-pattern>
            </web-resource-collection>
            <user-data-constraint>
                <transport-guarantee>CONFIDENTIAL</transport-guarantee>
            </user-data-constraint>
        </security-constraint>

/*
保密的

jetty给了我一条403错误消息。

您提出了三个不同的问题:应用程序引擎上的热重新加载灵活,使用mvh appengine时的部署问题:devserver和jetty 403错误消息

关于热重新加载,正如Patrice(Google)在中所解释的那样,在Java中只有在某些情况下才可能进行热重新加载

关于Jetty,403个错误主要与权限有关,如中所述:

请求有效,但服务器拒绝操作。用户 可能没有资源的必要权限,或者可能需要 某种叙述

关于mvn开发环境,仅根据您的
pom.xml
很难进行评估,但基于此,我将回顾
groupid
、所描述的目标和参数(您是否应该使用appengine-web.xml而不是web.xml?)以及的官方文档