没有为属性'mainClassName'指定值

时间:2015-05-20 07:58:37

标签: gradle spring-boot

我正在尝试使用

构建项目
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'.

但我真的不需要这个模块的主类。我该如何解决这个问题?

3 个答案:

答案 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'
}