Heim  >  Artikel  >  Java  >  So verwenden Sie das Springboot-Verpackungs-Plug-in, um JAR-Pakete zu entfernen und schlanker zu machen

So verwenden Sie das Springboot-Verpackungs-Plug-in, um JAR-Pakete zu entfernen und schlanker zu machen

王林
王林nach vorne
2023-05-16 17:13:061159Durchsuche

1. Pom-Dateikonfiguration Nach der Verwendung dieses Plug-Ins zum Erstellen gibt es ein zusätzliches lib-Verzeichnis (dh den durch das oben konfigurierte Ausgabeverzeichnis angegebenen Pfad), das das abhängige JAR-Paket enthält:

1.2 Das Springboot-Projekt verwendet den Spring -boot-maven-plugin Verpackungs-Plug-in

<!--拷贝依赖到jar外面的lib目录-->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <id>copy</id>
            <phase>package</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
            <configuration>                <!--指定的依赖路径-->
                <outputDirectory>
                    ${project.build.directory}/lib
                </outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>
So verwenden Sie das Springboot-Verpackungs-Plug-in, um JAR-Pakete zu entfernen und schlanker zu machen zum Konfigurieren der oben genannten Verpackung Danach wird das entsprechende JAR-Paket ausgeschlossen, wodurch das durch das Plug-In erstellte flache JAR-Paket kleiner wird und das Hochladen erleichtert wird Der Server für die Veröffentlichung ist wie folgt. Das lib-Verzeichnis unter dem BOOT-INF-Verzeichnis ist verschwunden:

So verwenden Sie das Springboot-Verpackungs-Plug-in, um JAR-Pakete zu entfernen und schlanker zu machen

Die Struktur im JAR-Paket ist

So verwenden Sie das Springboot-Verpackungs-Plug-in, um JAR-Pakete zu entfernen und schlanker zu machen Geben Sie dann den JAR-Paketpfad an .path="../lib" beim Starten des Projekts, um den Schlankheitseffekt zu erzielen, wobei die Abhängigkeiten in D:develop/shared/ abgelegt werden. Führen Sie im fjar-Verzeichnis den Befehl run aus

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <executable>true</executable>
     <layout>ZIP</layout>
        <mainClass>
            com.iasp.BasicStarter
        </mainClass>
        <!--只包含自己-->
        <includes>
            <include>
                <groupId>${groupId}</groupId>
                <artifactId>${artifactId}</artifactId>
            </include>
         <!--或者-->
           <!--依赖jar不打进项目jar包中-->
             <!--<include>
                  <groupId>nothing</groupId>
                  <artifactId>nothing</artifactId>
             </include>-->
        </includes>
        <!--不包含哪些-->
        <!--<excludeGroupIds>-->
            <!--com.hundsun.jrescloud,-->
            <!--org.springframework.boot,-->
            <!--org.springframework-->
        <!--</excludeGroupIds>-->
    </configuration>

    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Hinweis: Ein weiterer Start Die Lösung besteht darin, den Pfad anzugeben, ohne -Dloader.path="D:develop/shared/fjar" hinzuzufügen, und direkt den folgenden Befehl zum Starten zu verwenden

java -Dloader.path="D:develop/shared/fjar" -jar mytest.jar

Verwenden Sie den obigen Start. Wenn ja, müssen Sie das Maven-Jar-Plugin hinzufügen Plug-in und konfigurieren Sie das Attribut Darüber hinaus können Sie bei der Verarbeitung einiger Dateien, die ausführbare JAR-Dateien lesen, das Plug-in maven-jar-plugin verwenden, um das Spring-Boot-Maven-Plugin für Verpackungsvorgänge zu ersetzen. So verwenden Sie das Springboot-Verpackungs-Plug-in, um JAR-Pakete zu entfernen und schlanker zu machen

java -jar mytest.jar

Der Effekt des oben genannten Plug-Ins besteht darin, dass das dem Klassenpfad entsprechende JAR zur Datei MANIFEST.MF im Verzeichnis META_INF im Paket hinzugefügt wird, sodass beim ersten Start der Anwendung nur die erforderlichen Versionsabhängigkeiten vorhanden sind Gemäß dem Klassenpfad geladen (Um das Problem von Referenzkonflikten beim Laden mehrerer Versionen im gemeinsam genutzten Verzeichnis zu lösen), entspricht dieser Effekt dem Hinzufügen des Parameters -classpath xxx (spezifisches JAR).

Legen Sie zu diesem Zeitpunkt einfach das erforderliche JAR-Verzeichnis lib in dasselbe Verzeichnis wie die auszuführende Datei xxx.jar. Sie können beim Start den Parameter -Dloader.path nicht hinzufügen Wenn sich das Verzeichnis auf derselben Ebene befindet, müssen Sie -Dloader.path verwenden, um

wie folgt zu starten: Im Verzeichnis derselben Ebene starten

So verwenden Sie das Springboot-Verpackungs-Plug-in, um JAR-Pakete zu entfernen und schlanker zu machen Nicht im Verzeichnis derselben Ebene starten:

So verwenden Sie das Springboot-Verpackungs-Plug-in, um JAR-Pakete zu entfernen und schlanker zu machen Dabei kann -Dloader.path mehrere Verzeichnisse angeben, sodass bei mehreren Mikrodiensten einige öffentlich verwendete JAR-Dateien in einem gemeinsam genutzten Verzeichnis und für jeden Mikrodienst einzigartige JAR-Dateien im privaten Verzeichnis des Mikrodienstes abgelegt werden können Microservice (das Problem von JAR-Versionskonflikten lösen), Beispiele sind wie folgt:

Hinweis:

So verwenden Sie das Springboot-Verpackungs-Plug-in, um JAR-Pakete zu entfernen und schlanker zu machen

1 Wenn Sie -Dloader.path verwenden, müssen Sie ZIP hinzufügen Verpackung. Wenn nicht angegeben, wird -Dloader.path nicht wirksam

Zur Verschlankung der Verpackung mehrerer Mikrodienste wird die Verwendung der Maven-Jar-Plugin-Verpackung empfohlen, um einige durch das Spring-Boot-Maven-Plugin verursachte Anwendungsstartprobleme zu vermeiden Verpackungsmechanismus (gefangen)

So verwenden Sie das Springboot-Verpackungs-Plug-in, um JAR-Pakete zu entfernen und schlanker zu machen2. Wenn es verschiedene Versionen von Abhängigkeiten gibt:

Projekt A hängt beispielsweise von Version 1.0 der Y-Bibliothek ab und Projekt B hängt von Version 2.0 der Y-Bibliothek ab. Dann besteht möglicherweise eine Versionsabhängigkeit Konflikt (wenn die beiden Versionen nicht kompatibel sind). 2.1 Solange die Versionen konsistent sind, verwenden Sie weiterhin dieselbe Version, um konsistente Versionen sicherzustellen. Sie können die Versionsabhängigkeitsverwaltung von Maven für die Verarbeitung verwenden, d Andere JAR-Pakete derselben Version.

Der Test stellt fest, dass die Abhängigkeiten bei der Suche von oben nach unten durchsucht werden. Verwenden Sie das erste, wie unten gezeigt. Es wird die 1.jar-Version verwendet. Vereinfachung unserer Entwicklungsabläufe.

使用spring-boot-maven-plugin插件如果不指定程序主运行入口类的话默认为Main-Class: org.springframework.boot.loader.JarLauncher

So verwenden Sie das Springboot-Verpackungs-Plug-in, um JAR-Pakete zu entfernen und schlanker zu machen

这个可以自定义执行主入口类,有以下几种方式:

1.POM继承spring-boot-starter-parent

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.9.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
<properties>
        <!-- The main class to start by executing java -jar -->
        <start-class>ccom.notes.JavaNotesApplication</start-class>
</properties>

2.POM不是继承spring-boot-starter-parent时需指定

<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <version>2.1.9.RELEASE</version>
  <configuration>
    <mainClass>com.notes.JavaNotesApplication</mainClass>
    <layout>ZIP</layout>
  </configuration>
  <executions>
    <execution>
      <goals>
        <goal>repackage</goal>
      </goals>
    </execution>
  </executions>
</plugin>

3.POM不是继承spring-boot-starter-paren,且使用maven-jar-plugin插件来指定执行的类

<plugin>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-jar-plugin</artifactId>
   <configuration>
      <archive>
         <manifest>
            <addClasspath>true</addClasspath>
            <useUniqueVersions>false</useUniqueVersions>
            <classpathPrefix>lib/</classpathPrefix>
            <mainClass>com.notes.JavaNotesApplication</mainClass>
         </manifest>
         <manifestEntries>
            <version>${project.version}</version>
         </manifestEntries>
      </archive>
   </configuration>
</plugin>

Das obige ist der detaillierte Inhalt vonSo verwenden Sie das Springboot-Verpackungs-Plug-in, um JAR-Pakete zu entfernen und schlanker zu machen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen