Répertoire d'articles
-
- 1. Dans le fichier pom
- 2. Nom du package Jar
- 3. Emballage Maven
- 4. Exécutez le package jar
- 5. Emballez et générez un package de guerre
- 6. Erreurs rencontrées et précautions
-
- 6.1 La page correspondante est introuvable lors de l'accès à la page HTML
- 6.2 Le fichier HTML est généré dans la cible, mais la page HTML n'est toujours pas trouvée
- 6.3 Les plugins tels que `maven-compiler-plugin` ou` spring-boot-maven-plugin` dans le fichier pom ne peuvent pas être importés correctement (devient rouge)
Une fois le projet SpringBoot développé, il doit être emballé dans un package jar / package war, puis déployé et exécuté pour terminer le processus de l'ensemble du projet.
1. Dans le fichier 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-compiler-plugin
maven-compiler-plugin
Vous pouvez spécifier la version du JDK dans le projet et la version du fichier de classe généré par la compilation spécifiée. Dans mon exemple, j'ai spécifié que JDK11 était utilisé dans le code source pendant le développement, et le fichier de classe généré correspond également à JDK11.
1.2 Spring-Boot-Maven-Plugin
spring-boot-maven-plugin
Plug-ins fournis avec Maven. repackage
Reconditionnez l'application. Par défaut, les deux objectifs principaux de reconditionnement et d'exécution incluront toutes les dépendances définies dans le projet.
Certaines dépendances doivent être exclues du package jar exécutable. Il existe trois façons d'exclure des modules dépendants pendant l'exécution du package:
1.2.1 Exclure un module maven spécifique
L'exclusion d'un module maven spécifique est obtenue grâce à une combinaison unique de groupId et artifactId. (Si nécessaire, vous pouvez ajouter un classificateur pour confirmer de manière unique.)
<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>
Excluez le module de barre sous com.foo.
1.2.2 Exclure tous les modules maven qui correspondent à l '"artifactId spécifié"
Excluez tous les modules maven qui correspondent à l '"artifactId spécifié".
<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>
Exclus artifactId
est -à my-lib
, another-lib
tous les modules, à savoir l' ensemble groupId
inférieur artifactId
pour le my-lib
, another-lib
module.
1.2.3 Exclure tous les modules maven appartenant au "groupId spécifié"
<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>
Exclus groupId
comme com.foo
tous les modules.
2. Nom du package Jar
<finalName>Your jar Package Name</finalName>
La construction fileName
spécifie le nom du package jar généré par l'empaquetage.
3. Emballage Maven
Exécutez les commandes suivantes dans le répertoire racine du projet SpringBoot:
mvn package spring-boot:repackage
Vous pouvez générer le dossier cible dans le répertoire racine, qui contient xxx.jar.
4. Exécutez le package jar
4.1 Console exécutant le package jar
java -jar xxx.jar
4.2 Exécutez le package jar en arrière-plan, la fermeture du terminal n'affecte pas l'exécution du package jar
nohup java -jar DAG-1.0.jar > msg.log 2>&1 &
Le package jar s'exécute en arrière-plan, les informations du journal sont entrées dans le fichier msg.log et le journal des erreurs et le journal correct sont entrés dans le msg.log.
L'ajout d'une esperluette à la fin de la commande signifie que le processus sera exécuté en arrière-plan, de sorte qu'il reviendra immédiatement à l'état d'invite, et nous pouvons continuer à faire ce qui suit.
4.3 Exécutez le package jar en arrière-plan et entrez le journal correct et le mauvais journal dans différents fichiers
nohup java -jar DAG-1.0.jar >> msg1.log 2>>msg2.log &
Le journal correct est entré dans msg1.log et le mauvais journal est entré dans msg2.log.
5. Emballez et générez un package de guerre
Le package jar est généré par défaut. Spécifiez la forme de package à générer dans le fichier pom
<packaging>war</packaging>
<name>DAG-1.0</name>
<description>DAG project for Spring Boot</description>
Exécuter des commandes d'empaquetage
mvn package spring-boot:repackage
Vous pouvez voir que le package war est généré et que le package war est déployé pour exécuter le programme.
6. Erreurs rencontrées et précautions
6.1 La page correspondante est introuvable lors de l'accès à la page HTML
Dans ce cas, nous devons d'abord vérifier s'il existe un dossier de modèles correspondant sous le dossier cible généré et le fichier xxx.html qui devrait y être contenu. Lorsque le programme est en cours d'exécution, il ne reconnaît que les éléments du dossier cible. S'il n'y a pas de dossier de modèles correspondant et de fichier xxx.html sous le dossier cible, il est définitivement impossible d'ouvrir la page HTML.
La cause courante de cette erreur est que xxx.html n'est pas spécifié comme ressource du projet à empaqueter. Cela doit être spécifié dans le fichier 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>
Comme ci-dessus, spécifiez le fichier .properties, le fichier .xml, le fichier .yml, le fichier .html sous le dossier src / main / resources et le fichier .properties, le fichier .xml, .yml sous le dossier src / main / java Le fichier est utilisé comme fichier de ressources du projet, de sorte que le fichier html se trouve dans le fichier cible généré.
Si vous supprimez l'indication du fichier .html, le fichier HTML correspondant est introuvable dans le dossier cible généré et la page HTML ne peut pas être ouverte.
<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>
Après la suppression, il n'y a pas de fichier HTML dans le dossier cible généré.
Sans le dossier de modèles et les fichiers HTML qu'il contient, le programme en cours d'exécution ne pourra pas accéder à la page HTML.
6.2 Le fichier HTML est généré dans la cible, mais la page HTML n'est toujours pas trouvée
Il est possible que thymeleaf
la configuration soit erronée.
thymeleaf.prefix
Vous devez l'écrire correctement, et vous ne pouvez pas en /
écrire un plus ou un de moins /
, car de cette façon, lorsque vous écrivez la page d'accès, il y en aura plus ou moins un dans le chemin, et vous /
ne pourrez pas trouver la page HTML .
6.3 Le fichier pom maven-compiler-plugin
ou d' spring-boot-maven-plugin
autres plug-ins ne peuvent pas être importés correctement (devient rouge)
Vous devez introduire ces plug-ins dans les dépendances, puis introduire ces plug-ins dans les plugins de la construction.