Рубрики
Без рубрики

Весенняя загрузка: Настройка основного класса

Узнайте, как настроить основной класс приложения Spring Boot в Maven и Gradle.

Автор оригинала: baeldung.

1. Обзор

В этом кратком руководстве представлены различные способы определения точки входа в приложение Spring Boot с помощью Maven и Gradle.

Основной класс приложения Spring Boot-это класс, содержащий метод public static void main () , который запускает Spring ApplicationContext . По умолчанию, если основной класс явно не указан, Spring будет искать его в пути к классу во время компиляции и не запустится, если ни один или несколько из них не будут найдены.

В отличие от обычных приложений Java, основной класс, обсуждаемый в этом руководстве, не отображается как свойство Main-Class metadata в META-INF/MANIFEST.MF результирующего файла JAR или WAR.

Spring Boot ожидает, что свойство артефакта Main-Class metadata будет установлено в org.springframework.boot.loader.JarLauncher (или WarLauncher ) это означает, что передача нашего основного класса непосредственно в командную строку java не приведет к правильному запуску нашего приложения Spring Boot.

Пример манифеста выглядит следующим образом:

Manifest-Version: 1.0
Start-Class: com.baeldung.DemoApplication
Main-Class: org.springframework.boot.loader.JarLauncher

Вместо этого нам нужно определить свойство Start-Class в манифесте, которое оценивается JarLauncher для запуска приложения.

Давайте посмотрим, как мы можем управлять этим свойством с помощью Maven и Gradle.

2. Maven

Основной класс может быть определен как элемент начального класса в pom.xml раздел свойств:


      
      com.baeldung.DemoApplication

Обратите внимание, что это свойство будет оценено только в том случае, если мы также добавим spring-boot-starter-parent как в наш pom.xml .

В качестве альтернативы, основной класс может быть определен как основной класс элемент spring-boot-maven-plugin в разделе плагинов нашего pom.xml :


    
        
            org.springframework.boot
            spring-boot-maven-plugin             
                
                com.baeldung.DemoApplication
            
        
    

Пример этой конфигурации Maven можно найти на GitHub.

3. Gradle

Если мы используем плагин Spring Boot Gradle , есть несколько конфигураций, унаследованных от org.springframework.boot , где мы могли бы указать наш основной класс.

В файле Gradle проекта Имя основного класса может быть определено в блоке spring Boot configuration|/. Это изменение, внесенное здесь, подхватывается boot Run и boot Jar task:

springBoot {
    mainClassName = 'cpm.baeldung.DemoApplication'
}

В качестве альтернативы основной класс может быть определен как mainClassName собственность загрузочная банка Задача Gradle:

bootJar {
    mainClassName = 'cpm.baeldung.DemoApplication'
}

Или как проявленный атрибут загрузочная банка задача:

bootJar {
    manifest {
	attributes 'Start-Class': 'com.baeldung.DemoApplication'
    }
}

Обратите внимание, что основной класс, указанный в блоке конфигурации boot Jar , влияет только на JAR, который создает сама задача. Это изменение не влияет на поведение других задач Spring Boot Gradle, таких как boot Run .

В качестве бонуса, если плагин приложения Gradle применяется к проекту, имя основного класса может быть определено как глобальное свойство:

mainClassName = 'com.baeldung.DemoApplication'

Мы можем найти пример этих конфигураций Gradle на GitHub.

4. Использование CLI

Мы также можем указать основной класс через интерфейс командной строки.

Spring Boot org.springframework.boot.loader.PropertiesLauncher поставляется с аргументом JVM, позволяющим переопределить логический основной класс, называемый loader.main :

java -cp bootApp.jar -Dloader.main=com.baeldung.DemoApplication org.springframework.boot.loader.PropertiesLauncher

5. Заключение

Существует несколько способов указать точку входа в приложение Spring Boot. Важно знать, что все эти конфигурации-это просто разные способы изменения манифеста файла JAR или WAR.

Примеры рабочего кода можно найти здесь и там .