Моё весеннее загрузочное приложение завершается без ошибок, как только оно загружается - PullRequest
0 голосов
/ 26 октября 2018

Я преобразую приложение maven spring boot в приложение на основе Bazel. Я, наконец, получил его правильно скомпилировать, но как только я запускаю его, он просто выходит. Сервер не запускается, но печатает сообщение запуска загрузки спринта.

Я думаю, это связано с тем, что Spring не может найти сервлет, но я новичок в Java, поэтому не знаю, где искать.

Я не могу получить какую-либо полезную информацию от JVM относительно того, почему она просто выходит. Есть ли способ, как я могу увеличить детальность лесозаготовок?

Вот мое приложение. Java

package com.example.abc;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class AbcClient {

    public static void main(String[] args) {
      SpringApplication.run(AbcClient.class, args);
    }
}

Мой файл РАБОЧЕГО МЕСТА

maven_jar(
    name = "org_springframework_spring_core",
    artifact = "org.springframework:spring-core:jar:5.1.1.RELEASE"
)

maven_jar(
    name = "org_springframework_spring_beans",
    artifact = "org.springframework:spring-beans:jar:5.1.1.RELEASE"
)

maven_jar(
    name = "org_springframework_spring_context",
    artifact = "org.springframework:spring-context:jar:5.1.1.RELEASE"
)

maven_jar(
    name = "org_springframework_spring_aop",
    artifact = "org.springframework:spring-aop:jar:5.1.1.RELEASE"
)

maven_jar(
    name = "org_springframework_spring_expression",
    artifact = "org.springframework:spring-expression:jar:5.1.1.RELEASE"
)

maven_jar(
    name = "org_springframework_boot_spring_boot",
    artifact = "org.springframework.boot:spring-boot:jar:2.0.6.RELEASE"
)

maven_jar(
    name = "org_springframework_boot_spring_boot_autoconfigure",
    artifact = "org.springframework.boot:spring-boot-autoconfigure:jar:2.0.6.RELEASE"
)

maven_jar(
    name = "org_springframework_boot_spring_boot_starter_aop",
    artifact = "org.springframework.boot:spring-boot-starter-aop:jar:2.0.6.RELEASE"
)

maven_jar(
    name = "org_springframework_boot_spring_boot_starter_web",
    artifact = "org.springframework.boot:spring-boot-starter-web:jar:2.0.6.RELEASE"
)

maven_jar(
    name = "org_springframework_boot_spring_boot_starter_test",
    artifact = "org.springframework.boot:spring-boot-starter-test:jar:2.0.6.RELEASE"
)

maven_jar(
    name = "org_apache_tomcat_embed_tomcat_embed_core",
    artifact = "org.apache.tomcat.embed:tomcat-embed-core:jar:9.0.12"
)

maven_jar(
    name = "org_apache_tomcat_embed_tomcat_embed_jasper",
    artifact = "org.apache.tomcat.embed:tomcat-embed-jasper:jar:9.0.12"
)

maven_jar(
    name = "org_springframework_boot",
    artifact = "org.springframework.boot:spring-boot-starter-tomcat:jar:2.0.6.RELEASE"
)

maven_jar(
    name = "javax_servlet_jstl",
    artifact = "javax.servlet:jstl:jar:1.2"
)

maven_jar(
    name = "javax_servlet_javax_servlet_api",
    artifact = "javax.servlet:javax.servlet-api:jar:4.0.1"
)

maven_jar(
    name = "commons_logging_commons_logging",
    artifact = "commons-logging:commons-logging:jar:1.2"
)

maven_jar(
    name = "javax_servlet_jsp_javax_servlet_jsp_api",
    artifact = "javax.servlet.jsp:javax.servlet.jsp-api:jar:2.3.3"
)

и мой файл BUILD

java_binary(
    name = "AbcClient",
    srcs = glob(["src/main/java/com/example/abc/*.java"]),
    deps = [
        "@org_springframework_spring_core//jar",
        "@org_springframework_spring_beans//jar",
        "@org_springframework_spring_aop//jar",
        "@org_springframework_spring_expression//jar",
        "@org_springframework_boot_spring_boot//jar",
        "@org_springframework_boot_spring_boot_autoconfigure//jar",
        "@org_springframework_spring_context//jar",
        "@org_springframework_boot_spring_boot_starter_aop//jar",
        "@org_springframework_boot_spring_boot_starter_web//jar",
        "@org_apache_tomcat_embed_tomcat_embed_core//jar",
        "@org_apache_tomcat_embed_tomcat_embed_jasper//jar",
        "@javax_servlet_jstl//jar",
        "@javax_servlet_javax_servlet_api//jar",
        "@javax_servlet_jsp_javax_servlet_jsp_api//jar",
        "@commons_logging_commons_logging//jar",
    ],
    resources = glob([
        "src/main/java/resources/*",
        "src/main/java/webapp/resources/**"
    ])
)

1 Ответ

0 голосов
/ 26 октября 2018

Этого должно быть достаточно для зависимости spring-boot-starter-web, по умолчанию это включает Tomcat. Вы можете пропустить зависимости при запуске приложения, например увидеть, что SpringBootServletInitializer присутствует и работает.

Взгляните на проект bazel-springboot-rule и springboot.bzl Packager , который упаковывает приложение Spring Boot в качестве исполняемого JAR-файла с использованием Bazel (аналогично, это делают Maven и Gradle). Это более или менее:

load("//tools/springboot:springboot.bzl",
    "springboot",
    "add_boot_web_starter"
)

add_boot_web_starter(app_deps)

springboot(
    name = "spring-boot-sample",
    boot_app_class = "com.main.Application",
    deps = app_deps
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...