[JAVA] Qu'est-ce qu'un fichier .original Spring Boot?

Lorsque vous créez un projet Spring Boot et exécutez la commande mvn clean package, le fichier .original est créé dans le répertoire cible comme indiqué ci-dessous.

image.png

J'ai essayé de découvrir ce que c'était.

Le fichier .original est juste Jar ou War

Oui, c'est juste un fichier Jar, un fichier War.

Spring Boot peut créer un Executive Jar (War). Ce format est pour Jar et War qui ne sont pas «.original».

«.original» n'est pas exécutif, c'est juste Jar ou War.

Comme vous pouvez le voir en décompressant Jar et War et en comparant le contenu, Executable Jar (War) contient les classes liées à Spring Boot requises pour l'exécution, et la structure des répertoires est différente.

Les détails sont expliqués dans la documentation officielle. https://docs.spring.io/spring-boot/docs/current/reference/html/executable-jar.html

Fabriqué par Spring Boot Maven Plugin

Ce fichier est créé par le plugin Spring Boot Maven. Ce plugin a pour objectif spring-boot: repackage, où nous créons un Executive Jar (War) et renommons le Jar and War qui étaient initialement emballés dans Maven en le nom .original.

La raison pour laquelle il est créé même si spring-boot: repackage n'est pas spécifié comme mvn clean package est que les paramètres suivants sont définis dans pom.xml de spring-boot-starter-parent. Est en train d'être fait.

pom.xml(Extrait)


<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <executions>
    <execution>
      <id>repackage</id>
      <goals>
        <goal>repackage</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <mainClass>${start-class}</mainClass>
  </configuration>
</plugin>

repackage est exécuté dans la phase package, donc si vous faites mvn clean package, repackage sera également exécuté.

Pour éviter de créer un fichier .original

Si vous avez besoin de créer un fichier exécutable (War), le fichier .original sera toujours créé. Cependant, si vous souhaitez simplement créer un Jar ou War, vous pouvez ignorer la création d'un Executable Jar (War) avec l'un des éléments suivants:

mvn clean package -Dspring-boot.repackage.skip=true

pom.xml


<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
      <configuration>
        <skip>true</skip>
      </configuration>
    </plugin>
  </plugins>
</build>

Comment utiliser le fichier .original

Si l'opération consiste à déployer le fichier War sur le serveur d'applications sans utiliser le Tomcat intégré, il n'est pas nécessaire qu'il s'agisse d'un exécutable War. (Bien sûr, il peut également être déployé dans Executable War.)

Executable War a également tendance à être plus volumineux que les fichiers War classiques, car il contient également les classes Spring Boot nécessaires à son exécution et les bibliothèques étendues fournies par Maven. Par conséquent, si vous effectuez ce type d'opération, vous pouvez réduire la taille du fichier en déployant le fichier .original ou en définissant les paramètres ci-dessus afin que l'Executable War ne soit pas créé. Je vais.

Cependant, je pense que la bonne chose à propos de Spring Boot est qu'il peut être exécuté rapidement avec la commande java.

Recommended Posts

Qu'est-ce qu'un fichier .original Spring Boot?
Qu'est-ce qu'un fichier JAR?
Qu'est-ce que @Autowired dans Spring Boot?
Qu'est-ce qu'un constructeur
Qu'est-ce qu'un flux
Qu'est-ce que Spring Tools 4
Qu'est-ce qu'un servlet?
Qu'est-ce qu'une classe wrapper?
Qu'est-ce qu'un type booléen?
Qu'est-ce qu'un module Ruby?
Qu'est-ce qu'une virgule flottante?
Qu'est-ce qu'un commentaire significatif?
Téléchargement de fichiers avec Spring Boot
Qu'est-ce qu'une collection Java?
Qu'est-ce qu'une expression lambda?
Qu'est-ce que Fat⁉ enum?
Lors du téléchargement d'un fichier avec Spring Boot, la gestion des erreurs est effectuée lorsque la taille maximale du fichier est dépassée.
Qu'est-ce qu'un extrait de code en programmation?
Qu'est-ce qu'un type booléen de colonne?
Qu'est-ce qu'une variable de type référence?
Qu'est-ce qu'une expression lambda (Java)
Un mémo qui a touché Spring Boot
Qu'est-ce qu'un tableau bidimensionnel Ruby?
Spring Boot 2.2 prend désormais en charge RSocket, alors essayez-le
Intégré dans Spring Boot à l'aide d'un fichier de définition de bean nommé application.xml
Qu'est-ce qu'une classe en langage Java (3 /?)
Qu'est-ce qu'un terminal? -Chemin absolu et chemin relatif-
Priorité d'accès aux fichiers statiques dans Spring Boot
[Pour les débutants en programmation] Qu'est-ce qu'une méthode?
Mémorandum de téléchargement de fichier local avec Spring Boot
Quelle est la meilleure lecture de fichier (Java)
Qu'est-ce qu'une classe en langage Java (1 /?)
Qu'est-ce qu'une classe en langage Java (2 /?)
[Rails] Qu'est-ce qu'un point (.) Ou un deux-points (:)?
Comment diviser un fichier de message Spring Boot
Créez un site Web avec Spring Boot + Gradle (jdk1.8.x)
Qu'est-ce qui est nul? ]
Résumé de ce que j'ai appris sur Spring Boot
Créez une application de recherche simple avec Spring Boot
Qu'est-ce que 'java
Introduction aux fonctions récursives: qu'est-ce qu'une fonction récursive?
Qu'est-ce que Keycloak
Exécuter un projet Spring Boot avec VS Code
Qu'est-ce que maven?
Qu'est-ce que Jackson?
Spring MVC: Comportement lorsque `@ RequestParam` est omis
Qu'est-ce que soi
Qu'est-ce que Jenkins
Qu'est-ce que ArgumentMatcher?
Qu'est-ce que IM-Juggling?
Créez une application Spring Boot à l'aide d'IntelliJ IDEA
Défi Spring Boot
Qu'est-ce que les paramètres
Qu'est-ce que SLF4J?
Comment ajouter un chemin de classe dans Spring Boot
Qu'est-ce que la façade? ??