Предыдущий:Spring Boot (2): 5 способов быстро изменить путь доступа по умолчанию
Следующий:Spring Boot (4): отключить и настроить страницы ошибок по умолчанию
Введение
В этой статье описывается несколько способов настройки основного класса приложения Spring Boot через Maven или Gradle.
Основной класс приложения Spring Boot относится к классу, который включает в себяpublic static void main()
класс метода.
По умолчанию, если вы явно не укажете расположение основного класса, Spring компилируетclasspath
Поиск в , если не найдено ни одного основного класса или более одного, это приведет к сбою запуска Spring Boot.
В отличие от традиционных программ Java, к основным классам, обсуждаемым в этой статье, нельзя получить доступ через файл META-INF/MANIFEST.MF.Main-Class
определение свойства.
Поскольку Spring Boot ожидаетMain-Class
Стоимость имущества составляет:
org.springframework.boot.loader.JarLauncher (或WarLauncher)
Это означает, что передача основного класса напрямую через командную строку Java не запустит наше приложение Spring Boot.
Пример файла MANIFEST.MF может выглядеть так:
Manifest-Version: 1.0
Start-Class: org.baeldung.DemoApplication
Main-Class: org.springframework.boot.loader.JarLauncher
Вместо этого нам нужно использоватьStart-Class
свойство, JarLauncher будет использовать значение этого свойства для запуска приложения.
Давайте посмотрим, как управлять этим свойством в Maven или Gradle.
2. Мавен
Основной класс доступен в файле pom.xml.start-class
Определение элемента:
<properties>
<!-- The main class to start by executing "java -jar" -->
<start-class>org.baeldung.DemoApplication</start-class>
</properties>
Обратите внимание, что только когда файл pom.xmlparent
элемент установлен наspring-boot-starter-parent
, это свойство вступит в силу.
Кроме того, в нашем файле pom можно использовать плагины.spring-boot-maven-plugin
изmainClass
Элемент конфигурации:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>org.baeldung.DemoApplication</mainClass>
</configuration>
</plugin>
</plugins>
</build>
Пример использования Maven для настройки местоположения основного класса можно найти по адресуGithubнайти на.
3. Грейдл
Если мы используем плагин Spring Boot Gradle, вот еще несколько, унаследованных отorg.springframework.boot
В конфигурации можно указать наш основной класс.
В файле проекта build.gradle вы можете передатьspringBoot
Определение блока конфигурацииmainClassName
. Это делает его доступным для задач bootRun и bootJar:
springBoot {
mainClassName = 'org.baeldung.DemoApplication'
}
В качестве альтернативы определите в задаче bootJarmainClassName
:
bootJar {
mainClassName = 'org.baeldung.DemoApplication'
}
В качестве альтернативы определите файл манифеста в задаче bootJar.Start-Class
Атрибуты:
bootJar {
manifest {
attributes 'Start-Class': 'org.baeldung.DemoApplication'
}
}
Обратите внимание, что вbootJar
Конфигурация, сделанная в блоке конфигурации, действительна только для генерируемого JAR-файла. Недействительно для других задач Spring Boot в Gradle, таких как:bootRun
Задача.
Кроме того, если к проекту применяется подключаемый модуль приложения Gradle,mainClassName
Может быть определено как глобальное свойство:
mainClassName = 'org.baeldung.DemoApplication'
мы можемGithubНайдите пример этих конфигураций Gradle выше.
В-четвертых, используйте командную строку
Мы также можем передать местоположение основного класса через командную строку.
Весенний ботинокorg.springframework.boot.loader.PropertiesLauncher
Используйте аргумент из командной строки:loader.main
, который позволяет определить расположение основного класса:
java -cp bootApp.jar -Dloader.main=org.baeldung.DemoApplication org.springframework.boot.loader.PropertiesLauncher
V. Резюме
Существует несколько способов указать точку входа приложения Spring Boot, описанных здесь.
Самое главное — понять, что эти методы по существу изменяют файл MANIFEST.MF в файле JAR или WAR.
Рабочий код можно найти наздесьа такжездесьоказаться.