我正在尝试使用
构建项目apply plugin: 'spring-boot'
但它会在步骤 startScripts
中抛出异常:common:compileJava UP-TO-DATE
:common:processResources UP-TO-DATE
:common:classes UP-TO-DATE
:common:jar UP-TO-DATE
:common:findMainClass
:common:startScripts FAILED
FAILURE: Build failed with an exception.
* What went wrong:
A problem was found with the configuration of task ':common:startScripts'.
> No value has been specified for property 'mainClassName'.
但我真的不需要这个模块的主类。我该如何解决这个问题?
答案 0 :(得分:2)
在Spring-Boot的GitHub上有一个关于这个问题的开放票:https://github.com/spring-projects/spring-boot/issues/2679。根据讨论你可以做几件事:
spring-boot
部分移除buildscript
插件。这将从构建流程中删除特殊的Gradle任务。mainClassName
分配给某个随机字符串。它并不漂亮,但就这个不是可运行的应用程序而言,你可能并不关心主要类。希望这有帮助。
答案 1 :(得分:1)
您需要main
方法来调用SpringApplication.run(...)
。像这样:
public static void main(String[] args) throws Exception {
SpringApplication.run(Example.class, args);
}
在Gettings started指南中有关于main
方法的段落:
我们申请的最后一部分是主要方法。这只是一个 遵循应用程序的Java约定的标准方法 入口点。我们的main方法委托给Spring Boot SpringApplication类通过调用run。 SpringApplication会 引导我们的应用程序,启动Spring,然后启动 自动配置的Tomcat Web服务器。我们需要传递Example.class 作为run方法的参数告诉SpringApplication是哪个 主要的Spring组件。 args数组也传递给 公开任何命令行参数。
我建议创建一个Application
类,以此开始:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
但是,也许你应该先从Quick start指南开始。
答案 2 :(得分:0)
在build.gradle
的末尾有以下内容用于定义主类的名称。
我也使用gradlew bootjar
而不是gradlew build
。
bootJar {
mainClassName = 'com.spring.xx.app.App'
}