Не указано значение для свойства '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'
}