Процесс упаковки проекта SpringBoot в пакет jar package / war (на основе Maven)

Каталог статей


После разработки проекта SpringBoot его необходимо упаковать в пакет jar package / war, развернуть и запустить для завершения процесса всего проекта.

1. В pom файле

<build>
   <finalName>DAG-1.0</finalName>
   <plugins>
       <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-compiler-plugin</artifactId>
           <version>3.8.1</version>
           <configuration>
               <source>11</source>
               <target>11</target>
           </configuration>
       </plugin>

       <plugin>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-maven-plugin</artifactId>
           <executions>
               <execution>
                   <goals>
                       <goal>repackage</goal>
                   </goals>
               </execution>
           </executions>
       </plugin>
   </plugins>

   <resources>
       <resource>
           <directory>src/main/resources</directory>
           <includes>
               <include>**/*.properties</include>
               <include>**/*.xml</include>
               <include>**/*.yml</include>
           </includes>
           <filtering>true</filtering>
       </resource>
       <resource>
           <directory>src/main/java</directory>
           <includes>
               <include>**/*.properties</include>
               <include>**/*.xml</include>
               <include>**/*.yml</include>
           </includes>
           <filtering>true</filtering>
       </resource>
   </resources>
</build>

1.1 плагин компилятора maven

maven-compiler-pluginВы можете указать версию JDK в проекте и версию файла класса, сгенерированного указанной компиляцией. В моем примере я указал, что JDK11 использовался в исходном коде во время разработки, и сгенерированный файл класса также соответствует JDK11.

1.2 весенняя загрузка-maven-плагин

spring-boot-maven-pluginПлагины упакованы с использованием Maven. repackageПереупакуйте приложение. По умолчанию две цели maven - переупаковка и запуск - будут включать любые зависимости, определенные в проекте.

Некоторые зависимости необходимо исключить из исполняемого пакета jar. Есть три способа исключить зависимые модули во время работы пакета:

1.2.1 Исключить конкретный модуль maven

Исключение определенного модуля maven достигается за счет уникальной комбинации groupId и artifactId. (При необходимости вы можете добавить классификатор для однозначного подтверждения.)

<build>
    <finalName>DAG-1.0</finalName>
    <plugins>
        ......
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <excludes>
                    <excludes>
                        <groupId>com.foo</groupId>
                        <artifactId>bar</artifactId>
                    </excludes>
                </excludes>
            </configuration>
        </plugin>
    </plugins>
    ......
</build>

Исключите модуль bar из com.foo.

1.2.2 Исключить все модули maven, соответствующие "заданному artifactId"

Исключить все модули maven, соответствующие «указанному artifactId».

<build>
    <finalName>DAG-1.0</finalName>
    <plugins>
        ......
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <excludes>
                    <excludeArtifactIds>my-lib,another-lib</excludeArtifactIds>
                </excludes>
            </configuration>
        </plugin>
    </plugins>
    ......
</build>

Исключенные artifactIdесть my-lib, another-libвсе модули, т.е. все groupIdниже , artifactIdдля my-lib, another-libмодуля.

1.2.3 Исключить все модули maven, принадлежащие "заданному идентификатору группы"

<build>
    <finalName>DAG-1.0</finalName>
    <plugins>
        ......
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <excludes>
                    <excludeGroupIds>com.foo</excludeGroupIds>
                </excludes>
            </configuration>
        </plugin>
    </plugins>
    ......
</build>

Исключены groupIdкак com.fooвсе модули.

2. Название пакета Jar

<finalName>Your jar Package Name</finalName>

Сборка fileNameуказывает имя пакета jar, созданного при упаковке.

3. Упаковка Maven

Выполните следующие команды в корневом каталоге проекта SpringBoot:

mvn package spring-boot:repackage

Вы можете создать целевую папку в корневом каталоге, который содержит xxx.jar.

4. Запустите пакет jar.

4.1 Консольный запуск пакета jar

java -jar xxx.jar

4.2 Запустите пакет jar в фоновом режиме, закрытие терминала не влияет на работу пакета jar

nohup java -jar DAG-1.0.jar > msg.log 2>&1 &

Пакет jar работает в фоновом режиме, информация журнала вводится в файл msg.log, а журнал ошибок и правильный журнал заносятся в файл msg.log.
Добавление амперсанда в конце команды означает, что процесс будет выполняться в фоновом режиме, так что он немедленно вернется в состояние приглашения, и мы можем продолжить делать следующее.

4.3 Запустите пакет jar в фоновом режиме и введите правильный журнал и неправильный журнал в разные файлы.

nohup java -jar DAG-1.0.jar >> msg1.log 2>>msg2.log &

Правильный журнал вводится в msg1.log, а неправильный журнал вводится в msg2.log.

5. Упакуйте и сгенерируйте боевой пакет

Пакет jar создается по умолчанию. Укажите, какую форму пакета генерировать в файле pom

<packaging>war</packaging>
<name>DAG-1.0</name>
<description>DAG project for Spring Boot</description>

Выполнить команды упаковки

mvn package spring-boot:repackage

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

6. Возникшие ошибки и меры предосторожности

6.1 Соответствующая страница не может быть найдена при доступе к странице HTML

В этом случае мы должны сначала проверить, есть ли соответствующая папка шаблонов в созданной целевой папке и файл xxx.html, который должен в ней содержаться. Когда программа запущена, она распознает только то, что находится в целевой папке.Если в целевой папке нет соответствующей папки шаблонов и файла xxx.html, невозможно открыть HTML-страницу.

Распространенной причиной этой ошибки является то, что xxx.html не указан в качестве ресурса проекта, который нужно упаковать. Это необходимо указать в файле pom.

<build>
	......
	<resources>
	    <resource>
	        <directory>src/main/resources</directory>
	        <includes>
	            <include>**/*.properties</include>
	            <include>**/*.xml</include>
	            <include>**/*.yml</include>
	            <include>**/*.html</include>
	        </includes>
	        <filtering>true</filtering>
	    </resource>
	    <resource>
	        <directory>src/main/java</directory>
	        <includes>
	            <include>**/*.properties</include>
	            <include>**/*.xml</include>
	            <include>**/*.yml</include>
	        </includes>
	        <filtering>true</filtering>
	    </resource>
	</resources>
<build>

Как и выше, укажите файл .properties, файл .xml, файл .yml, файл .html в папке src / main / resources и файл .properties, файл .xml, .yml в папке src / main / java. используется в качестве файла ресурсов проекта, поэтому файл html можно найти в сгенерированном целевом файле.

Если вы удалите указание на файл .html, соответствующий HTML-файл не будет найден в созданной целевой папке, и HTML-страница не может быть открыта.

<build>
	......
	<resources>
	    <resource>
	        <directory>src/main/resources</directory>
	        <includes>
	            <include>**/*.properties</include>
	            <include>**/*.xml</include>
	            <include>**/*.yml</include>
	        </includes>
	        <filtering>true</filtering>
	    </resource>
	    <resource>
	        <directory>src/main/java</directory>
	        <includes>
	            <include>**/*.properties</include>
	            <include>**/*.xml</include>
	            <include>**/*.yml</include>
	        </includes>
	        <filtering>true</filtering>
	    </resource>
	</resources>
<build>

После удаления в созданной целевой папке нет HTML-файла.

Без папки шаблонов и HTML-файлов в ней запущенная программа не сможет получить доступ к HTML-странице.

6.2 HTML-файл создается в целевом объекте, но HTML-страница все еще не найдена.

Возможно, thymeleafконфигурация неправильная.

thymeleaf.prefixВы должны написать его правильно, и вы не можете /написать на один больше или один меньше /, потому что таким образом, когда вы пишете страницу доступа, в пути будет больше или меньше одной, и вы /не сможете найти HTML-страницу .

6.3 Файл pom maven-compiler-pluginили spring-boot-maven-pluginдругие плагины не могут быть правильно импортированы (становится красным)

Вам необходимо ввести эти подключаемые модули в зависимости, а затем ввести эти подключаемые модули в подключаемые модули в сборке.

рекомендация

отblog.csdn.net/qq_27198345/article/details/111319290