[Перевод] Spring Boot Tutorial (3): 6 способов настроить запись запуска программы

Spring Boot

Предыдущий: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.

Рабочий код можно найти наздесьа такжездесьоказаться.

оригинал:Spring Boot: Configuring a Main Class