首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何部署对Google的春季战AppEngine - Java11

如何部署对Google的春季战AppEngine - Java11
EN

Stack Overflow用户
提问于 2022-08-04 20:49:53
回答 1查看 86关注 0票数 0

我正在尝试部署一个war打包的springboot应用程序- Java 11。

创建了一个全新的springboot web应用程序(打包war),并遵循了https://cloud.google.com/appengine/docs/standard/java-gen2/war-packaging来自step1的文章。即克隆和安装(https://github.com/GoogleCloudPlatform/java-docs-samples)

弹簧引导父母

代码语言:javascript
复制
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
<!--        <version>2.7.2</version>-->
        <version>2.5.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
<packaging>war</packaging>
    <properties>
        <java.version>11</java.version>
        <maven.compiler.target>11</maven.compiler.target>
        <maven.compiler.source>11</maven.compiler.source>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.google.cloud</groupId>
                <artifactId>spring-cloud-gcp-dependencies</artifactId>
<!--                <version>2.0.3</version>-->
                <version>2.0.4</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

将猫排除在网页之外

代码语言:javascript
复制
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

已添加

代码语言:javascript
复制
<dependency>
    <groupId>com.example.appengine.demo</groupId>
    <artifactId>simple-jetty-main</artifactId>
    <version>1</version>
    <scope>provided</scope>
</dependency>

和插件

代码语言:javascript
复制
<plugins>
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <version>2.6.6</version>
        <executions>
            <execution>
                <goals>
                    <goal>repackage</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.3.2</version>
    </plugin>
    <plugin>
        <groupId>com.google.cloud.tools</groupId>
        <artifactId>appengine-maven-plugin</artifactId>
        <version>2.4.2</version>
        <configuration>
            <version>1</version>
            <projectId>GCLOUD_CONFIG</projectId>
        </configuration>
    </plugin>

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>3.1.1</version>
        <executions>
            <execution>
                <id>copy</id>
                <phase>prepare-package</phase>
                <goals>
                    <goal>copy-dependencies</goal>
                </goals>
                <configuration>
                    <outputDirectory>
                        ${project.build.directory}/appengine-staging
                    </outputDirectory>
                </configuration>
            </execution>
        </executions>
    </plugin>
</plugins>

src/main/appengine/app.yaml

代码语言:javascript
复制
runtime: java11
entrypoint: 'java -cp "*" com.example.appengine.demo.jettymain.Main myapp-0.0.1-SNAPSHOT.war'
instance_class: B2

handlers:
- url: /.*
  script: this field is required, but ignored

manual_scaling:
  instances: 1

resources:
  cpu: 2
  memory_gb: 2.3
  disk_size_gb: 20
  volumes:
  - name: ramdisk1
    volume_type: tmpfs
    size_gb: 0.5

产出:

遗憾的是,这不是我所期望的。

另一个变体:我记得的没有添加servlet初始化器,所以纠正它

代码语言:javascript
复制
@SpringBootApplication
public class DashApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.runDashApplication.class, args);
    }
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(DashApplication.class);
    }
}

误差

应用程序在日志中出现错误。

org.springframework.boot.env.EnvironmentPostProcessor org.springframework.boot.test.web.SpringBootTestRandomPortEnvironmentPostProcessor "java.lang.IllegalArgumentException:无法实例化org.springframework.boot.util.Instantiator.instantiate(Instantiator.java:131) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)

我犯了什么错?

请帮助-如何创建一个简单的Java 11,springboot引导,war包,并部署到应用程序引擎

EN

回答 1

Stack Overflow用户

发布于 2022-08-14 16:31:12

正如注释部分所提到的,在spring-boot-starter-test中添加pom.xml作为测试依赖解决了这个问题。

代码语言:javascript
复制
<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
</dependency>

为了将来可能遇到这个用例的社区的利益,将答案作为社区wiki发布。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73242099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档