[JAVA] Was ist eine Spring Boot-Originaldatei?

Wenn Sie ein Spring Boot-Projekt erstellen und den Befehl mvn clean package ausführen, wird die .original-Datei wie unten gezeigt im Zielverzeichnis erstellt.

image.png

Ich versuchte herauszufinden, was das war.

Die .original-Datei ist nur Jar oder War

Ja, es ist nur eine Jar-Datei, eine War-Datei.

Spring Boot kann ein Executive Jar (War) erstellen. Dieses Format ist für Jar und War, die nicht ".original" sind.

.original ist keine Exekutive, sondern nur Jar oder War.

Wie Sie sehen können, indem Sie Jar und War entpacken und den Inhalt vergleichen, enthält Executable Jar (War) Spring Boot-bezogene Klassen, die für die Ausführung erforderlich sind, und die Verzeichnisstruktur ist unterschiedlich.

Details werden in der offiziellen Dokumentation erklärt. https://docs.spring.io/spring-boot/docs/current/reference/html/executable-jar.html

Hergestellt von Spring Boot Maven Plugin

Diese Datei wird vom Spring Boot Maven Plugin erstellt. Dieses Plugin hat das Ziel "Spring-Boot: Repackage", bei dem wir ein Executive Jar (War) erstellen und das Jar und War, die ursprünglich in Maven verpackt waren, in ".original" umbenennen.

Der Grund, warum es erstellt wird, obwohl "spring-boot: repackage" nicht wie "mvn clean package" angegeben ist, ist, dass die folgenden Einstellungen in pom.xml von spring-boot-Starter-Parent festgelegt sind. Wird erledigt.

pom.xml(Auszug)


<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 wird in der package-Phase ausgeführt. Wenn Sie also mvn clean package ausführen, wird auch repackage ausgeführt.

Um zu vermeiden, dass eine .original-Datei erstellt wird

Wenn Sie ein ausführbares Jar (War) erstellen müssen, wird immer die .original-Datei erstellt. Wenn Sie jedoch nur ein Glas oder einen Krieg erstellen möchten, können Sie das Erstellen eines Executive Jar (War) mit einer der folgenden Optionen überspringen:

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>

Verwendung der .original-Datei

Wenn die War-Datei ohne Verwendung des integrierten Tomcat auf dem Anwendungsserver bereitgestellt werden soll, muss es sich nicht um einen ausführbaren War handeln. (Natürlich kann es auch in Executable War eingesetzt werden.)

Executable War enthält auch die Spring Boot-Klassen, die zum Ausführen erforderlich sind, sowie von Maven bereitgestellte Bibliotheken mit Gültigkeitsbereich, sodass es in der Regel größer als eine normale War-Datei ist. Wenn Sie diese Art von Operation ausführen, können Sie daher die Dateigröße reduzieren, indem Sie die .original-Datei bereitstellen oder die obigen Einstellungen vornehmen, damit Executable War nicht erstellt wird. Ich werde.

Ich denke jedoch, dass das Gute an Spring Boot ist, dass es schnell mit dem Java-Befehl ausgeführt werden kann.

Recommended Posts

Was ist eine Spring Boot-Originaldatei?
Was ist eine JAR-Datei?
Was ist @Autowired im Spring Boot?
Was ist ein Konstruktor?
Was ist ein Stream?
Was ist Spring Tools 4?
Was ist ein Servlet?
Was ist eine Wrapper-Klasse?
Was ist ein boolescher Typ?
Was ist ein Ruby-Modul?
Was ist ein Gleitkomma?
Was ist ein aussagekräftiger Kommentar?
Datei-Upload mit Spring Boot
Was ist eine Java-Sammlung?
Was ist ein Lambda-Ausdruck?
Was ist Fat⁉ enum?
Beim Hochladen einer Datei mit Spring Boot wird eine Fehlerbehandlung durchgeführt, wenn die maximale Dateigröße überschritten wird.
Was ist ein Ausschnitt in der Programmierung?
Was ist ein Boolescher Spaltentyp?
Was ist eine Referenztypvariable?
Was ist ein Lambda-Ausdruck (Java)
Ein Memo, das Spring Boot berührte
Was ist ein zweidimensionales Ruby-Array?
Spring Boot 2.2 unterstützt jetzt RSocket. Probieren Sie es aus
Wird in Spring Boot mithilfe einer Bean-Definitionsdatei mit dem Namen application.xml angepasst
Was ist eine Klasse in der Java-Sprache (3 /?)
Was ist ein Terminal? -Absoluter Pfad & relativer Pfad-
Statische Dateizugriffspriorität beim Spring Boot
[Für Programmieranfänger] Was ist eine Methode?
Memorandum zum Herunterladen lokaler Dateien mit Spring Boot
Was ist das beste Lesen von Dateien (Java)
Was ist eine Klasse in der Java-Sprache (1 /?)
Was ist eine Klasse in der Java-Sprache (2 /?)
[Rails] Was ist ein Punkt (.) Oder ein Doppelpunkt (:)?
So teilen Sie eine Spring Boot-Nachrichtendatei
Erstellen Sie eine Website mit Spring Boot + Gradle (jdk1.8.x)
Was ist null? ]]
Zusammenfassung dessen, was ich über Spring Boot gelernt habe
Erstellen Sie mit Spring Boot eine einfache Such-App
Was ist java
Einführung in rekursive Funktionen: Was ist eine rekursive Funktion?
Was ist Schlüsselumhang?
Führen Sie ein Spring Boot-Projekt mit VS-Code aus
Was ist Maven?
Was ist Jackson?
Spring MVC: Verhalten, wenn "@ RequestParam" weggelassen wird
Was ist Selbst
Was ist Jenkins?
Was ist ArgumentMatcher?
Was ist IM-Jonglieren?
Erstellen Sie eine Spring Boot-Anwendung mit IntelliJ IDEA
Fordern Sie Spring Boot heraus
Was ist params
Was ist SLF4J?
So fügen Sie in Spring Boot einen Klassenpfad hinzu
Was ist Fassade? ??