Maven 升级无法 运行 包 appengine:stage
Maven upgrade unable to run package appengine:stage
我有一个 Java 8 Spring 启动应用程序部署到 Google App Engine 并通过 GCP CloudBuild 构建。我正在尝试将它从 Java 8 升级到 Java 11.
在 cloudbuild.yaml
文件中,我更改了:
- id: 'Build and Test'
name: 'gcr.io/cloud-builders/mvn:3.5.0-jdk-8'
args: ['package', 'appengine:stage']
至:
- id: 'Build and Test'
name: 'maven:3.8.3-jdk-11'
args: ['package', 'appengine:stage']
当我运行 CloudBuild时,这一步突然失败并出现以下错误:
docker.io/library/maven:3.8.3-jdk-11
/usr/local/bin/mvn-entrypoint.sh: 50: exec: package: not found
在其之前的配置中,运行ning 很好。整个 cloudbuild.yaml
文件是:
steps:
- id: 'copy file'
name: 'ubuntu'
args: ['cp', 'src/main/appengine/app.yaml', src/main/appengine/app.yaml]
- id: 'Build and Test'
name: 'maven:3.8.3-jdk-11'
args: ['package', 'appengine:stage']
这是怎么回事? gcr.io/cloud-builders/mvn:3.5.0-jdk-8
图像是否以某种方式理解 mvn package appengine:stage
,而 maven:3.8.3-jdk-11
图像不理解?主要是我只需要有人帮助我理解为什么我会收到错误。如果有人也可以就如何修复或规避它提供一些建议,那也将不胜感激。提前致谢!
查看有关迁移到 Java 11 runtime 的 Google 文档,我发现 App Engine 标准环境允许您在 Java 11 运行时,减少运行时转换工作量和复杂性。
项目引擎 API JAR 允许您的 Java 11 应用联系捆绑服务 API 并访问与 Java 8 运行时相同的大部分功能.
您还可以使用 Google 在功能上等同于 App Engine 打包服务的云产品。
正在添加 overview of the migration process 文档。
要遵循的过程是:
- 下载 Cloud SDK。
- 从独立的 App Engine Maven 插件迁移到云端
基于 SDK 的 Maven 插件或基于 Cloud SDK 的 Gradle 插件。
- 安装 App Engine API JAR 如果您使用的是 App Engine
捆绑服务。
- 将您的 XML 文件迁移到等效的 yaml 文件。
现在,关于您遇到的问题,您应该指定脚本的整个路径,因为 /usr/src/app
可能不在您的路径中。您还必须确保您的 entrypoint.sh
是可执行的;但是,根据您的情况,docker 将精确复制您构建主机上的权限,因此可能不需要此步骤。
另外建议entrypoint/command不能用单引号'
,可以用“
,
试试
事后看来,这是显而易见的。我需要将 mvn
指定为步骤中的入口点命令,如下所示:
- id: 'Build and Test'
entrypoint: mvn
name: 'maven:3.8.3.0-jdk-11'
args: ['package','appengine:stage']
我有一个 Java 8 Spring 启动应用程序部署到 Google App Engine 并通过 GCP CloudBuild 构建。我正在尝试将它从 Java 8 升级到 Java 11.
在 cloudbuild.yaml
文件中,我更改了:
- id: 'Build and Test'
name: 'gcr.io/cloud-builders/mvn:3.5.0-jdk-8'
args: ['package', 'appengine:stage']
至:
- id: 'Build and Test'
name: 'maven:3.8.3-jdk-11'
args: ['package', 'appengine:stage']
当我运行 CloudBuild时,这一步突然失败并出现以下错误:
docker.io/library/maven:3.8.3-jdk-11
/usr/local/bin/mvn-entrypoint.sh: 50: exec: package: not found
在其之前的配置中,运行ning 很好。整个 cloudbuild.yaml
文件是:
steps:
- id: 'copy file'
name: 'ubuntu'
args: ['cp', 'src/main/appengine/app.yaml', src/main/appengine/app.yaml]
- id: 'Build and Test'
name: 'maven:3.8.3-jdk-11'
args: ['package', 'appengine:stage']
这是怎么回事? gcr.io/cloud-builders/mvn:3.5.0-jdk-8
图像是否以某种方式理解 mvn package appengine:stage
,而 maven:3.8.3-jdk-11
图像不理解?主要是我只需要有人帮助我理解为什么我会收到错误。如果有人也可以就如何修复或规避它提供一些建议,那也将不胜感激。提前致谢!
查看有关迁移到 Java 11 runtime 的 Google 文档,我发现 App Engine 标准环境允许您在 Java 11 运行时,减少运行时转换工作量和复杂性。
项目引擎 API JAR 允许您的 Java 11 应用联系捆绑服务 API 并访问与 Java 8 运行时相同的大部分功能.
您还可以使用 Google 在功能上等同于 App Engine 打包服务的云产品。
正在添加 overview of the migration process 文档。
要遵循的过程是:
- 下载 Cloud SDK。
- 从独立的 App Engine Maven 插件迁移到云端 基于 SDK 的 Maven 插件或基于 Cloud SDK 的 Gradle 插件。
- 安装 App Engine API JAR 如果您使用的是 App Engine 捆绑服务。
- 将您的 XML 文件迁移到等效的 yaml 文件。
现在,关于您遇到的问题,您应该指定脚本的整个路径,因为 /usr/src/app
可能不在您的路径中。您还必须确保您的 entrypoint.sh
是可执行的;但是,根据您的情况,docker 将精确复制您构建主机上的权限,因此可能不需要此步骤。
另外建议entrypoint/command不能用单引号'
,可以用“
,
事后看来,这是显而易见的。我需要将 mvn
指定为步骤中的入口点命令,如下所示:
- id: 'Build and Test'
entrypoint: mvn
name: 'maven:3.8.3.0-jdk-11'
args: ['package','appengine:stage']