Не указано значение для свойства 'mainClassName'

Я пытаюсь построить проект с

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'.

Но мне действительно не нужен основной класс для этого модуля. Как я должен решить это?

2 ответа

Существует открытый билет по этой проблеме на GitHub Spring-Boot: https://github.com/spring-projects/spring-boot/issues/2679. Есть несколько вещей, которые вы можете сделать в соответствии с обсуждением:

  • Удалить spring-boot плагин из buildscript раздел. Это удалит специальные задачи Gradle из потока сборки.
  • приписывать mainClassName в какую-то случайную строку. Это не красиво, но, поскольку это не запускаемое приложение, вы, вероятно, не заботитесь о главном классе.
  • Есть несколько более громоздких способов решения этой проблемы, перечисленных по ссылке, если вы хотите попробовать их.

Надеюсь это поможет.

Тебе необходимо main метод, который вызывает SpringApplication.run(...), Как это:

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

В Руководстве по началу работы есть параграф о main метод:

Заключительная часть нашего приложения является основным методом. Это просто стандартный метод, который следует Java-соглашению для точки входа приложения. Наш основной метод делегирует класс SpringAot SpringApplication, вызывая run. SpringApplication загрузит наше приложение, запустив Spring, который, в свою очередь, запустит автоматически настроенный веб-сервер Tomcat. Нам нужно передать Example.class в качестве аргумента методу run, чтобы сообщить SpringApplication, который является основным компонентом Spring. Массив args также передается для предоставления любых аргументов командной строки.

Я рекомендую создать Application класс, где все начинается:

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

Но, возможно, вам следует начать с краткого руководства по началу работы.

В конце моего build.gradle для определения имени основного класса.

Я также использую gradlew bootjar вместо того gradlew build.

bootJar {
    mainClassName = 'com.spring.xx.app.App'
}
Другие вопросы по тегам