【发布时间】:2020-12-31 18:42:58
【问题描述】:
在过去的几年里,我一直在开发一个网络应用程序(使用 Java 8、CSS、JS、HTML 编写)并定期在 Google App Engine 标准环境上对其进行测试,没有任何问题. 我的应用程序结构如下:
- myCommonEntities(完全用 Java 编写,编译时生成标准 .jar 文件)
- myCommonTransactions(完全用 Java 编写,编译时生成标准 .jar 文件)
- myCommonUtilities(完全用 Java 编写,编译时生成标准 .jar 文件)
- myAppServer(完全用 Java 编写,编译时生成标准 .jar 文件)
- myAppWeb(使用js、css、html编写,生成标准的.war文件,包含以上4个jar)
这是部署到 GAE 时调用的 pom.xml 文件部分:
<build>
<plugins>
<plugin>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>1.9.64</version>
<configuration>
<enableJarClasses>false</enableJarClasses>
<version>1</version>
<devAppserverLogLevel>warning</devAppserverLogLevel>
</configuration>
</plugin>
</plugins>
</build>
我曾经使用 myWebApp 目录中的以下命令部署应用程序:
mvn appengine:update
在过去的 4 天里,我无法使用上述方法部署我的应用程序。 mvn appengine:update 命令返回以下错误:
Application deployment failed. Message: Deployments using appcfg are no longer supported
搜索后,根据this web page,我意识到appcfg 部署方法已被弃用,现在被gloud app deploy 方法取代。下载后,我使用以下命令部署了我的应用程序:gcloud app deploy。
问题是gloud app deploy部署方式只上传src/main/webapp文件夹下的源码,即所有css、html、js都上传。但是,包含实体、事务、实用程序和服务器代码的 4 个 jar 文件不会被上传,因此在访问网页时会导致 ClassNotFoundException。
所以如果我遗漏了什么,我再次搜索并找到了this page。其中,我从这个页面逐字引用......它说......
一个例子 下面是一个示例,说明如何为具有两个服务的应用程序配置 WAR 目录结构中的各种文件:一个处理 Web 请求的默认服务,以及另一个用于后端处理的服务(名为 my-service)。 假设顶级EAR目录是“my-application”,定义文件my-application/META-INF/appengine-application.xml:
就我的应用而言,上面引用中示例为“my-service”的内容等同于 myServerApp,上面引用中示例为“默认服务”的内容等同于 myWebApp。
这是否意味着在新的部署方案下,只有当我将上述项目结构转换为“ear”结构时,我的应用才会被部署? 或者,有没有办法让我部署我的应用程序而不必从现有结构更改为“耳朵”结构?
我们将非常感谢您对此事的任何帮助。如果我完全误解了从旧方式迁移到新方式的方法,我愿意接受抨击。
【问题讨论】:
-
嗨@user3483599,你能试试运行命令
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID而不是gloud app deploy吗?根据official documentation,此命令应该允许您使用 Maven 部署应用程序。 -
感谢您的回复,@ gso_gabriel。我一定会在这里尝试并更新。
-
嗨 @user3483599 该命令对您有帮助吗?
-
我从头开始重新安装了所有东西,包括 Eclipse 2020-06、Google Cloud Tools for Eclipse,创建了新的 Eclipse 项目,从备份中导入源代码到这些新创建的项目中,重新构建了所有项目,然后使用 Eclipse 中 Google Cloud Tools for Eclipse 按钮中的“部署到 App Engine 标准...”选项进行部署,并且可以正常工作。
标签: google-app-engine deployment gcloud deprecated appcfg