Rumah  >  Artikel  >  Java  >  Cara menggunakan pemalam pembungkusan springboot untuk mengeluarkan bungkusan balang dan melangsingkan badan

Cara menggunakan pemalam pembungkusan springboot untuk mengeluarkan bungkusan balang dan melangsingkan badan

王林
王林ke hadapan
2023-05-16 17:13:061161semak imbas

1. Konfigurasi fail Pom

1.1 Tambah pemalam maven-dependency-plugin untuk menyalin pakej jar yang dirujuk ke laluan yang ditentukan

Adalah mudah untuk permulaan tomcat berikutnya untuk menentukan laluan pakej pergantungan

<!--拷贝依赖到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>

Selepas menggunakan pemalam ini untuk membina struktur direktori, terdapat direktori lib tambahan (iaitu, laluan yang ditentukan oleh outputDirectory yang dikonfigurasikan di atas), yang mengandungi pakej balang bergantung:

Cara menggunakan pemalam pembungkusan springboot untuk mengeluarkan bungkusan balang dan melangsingkan badan

Cara menggunakan pemalam pembungkusan springboot untuk mengeluarkan bungkusan balang dan melangsingkan badan

1.2 Projek springboot menggunakan spring-boot-maven-plugin untuk membungkus pemalam

rreee

Selepas mengkonfigurasi pembungkusan di atas, pakej balang yang sepadan akan dikecualikan, menjadikan pakej Flat dibuat oleh pemalam Saiz pakej balang telah menjadi lebih kecil, menjadikannya lebih mudah untuk memuat naik ke pelayan untuk penerbitan Kesannya adalah seperti berikut. Direktori lib di bawah direktori BOOT-INF hilang:

Cara menggunakan pemalam pembungkusan springboot untuk mengeluarkan bungkusan balang dan melangsingkan badan

Struktur pakej jar asal adalah seperti berikut

Cara menggunakan pemalam pembungkusan springboot untuk mengeluarkan bungkusan balang dan melangsingkan badan

Kemudian nyatakan laluan pakej jar -Dloader.path="../lib" semasa memulakan projek, untuk mencapai kesan pelangsingan, di mana kebergantungan diletakkan dalam D: Dalam direktori develop/shared/fjar, laksanakan arahan run

<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>

Nota: Satu lagi penyelesaian permulaan adalah untuk menentukan laluan tanpa menambah -Dloader.path="D:develop/shared/fjar", dan gunakannya secara terus seperti berikut Command startup

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

Jika anda menggunakan permulaan di atas, anda perlu menambah pemalam maven-jar-plugin dan mengkonfigurasi atribut pemalam Pemalam menggantikan pemalam spring-boot-maven-plugin untuk operasi pembungkusan

java -jar mytest.jar

Kesan pemalam di atas adalah untuk menambah balang yang sepadan dengan laluan Kelas kepada fail MANIFEST.MF di bawah META_INF direktori dalam pakej, supaya balang yang baru digunakan boleh digunakan kemudian Pada permulaan, hanya kebergantungan versi yang diperlukan akan dimuatkan mengikut Laluan Kelas (untuk menyelesaikan masalah konflik rujukan pemuatan berbilang versi dalam direktori kongsi) . Kesan ini bersamaan dengan menambah parameter -classpath xxx (balang khusus).

Pada masa ini, letakkan sahaja lib direktori jar yang diperlukan dalam direktori yang sama dengan xxx.jar yang akan dijalankan Anda tidak perlu menambah parameter -Dloader.path apabila memulakan direktori lib adalah sama dengan xxx.jar yang akan dijalankan, Jika xxx.jar tidak berada dalam direktori tahap yang sama, anda perlu menggunakan -Dloader.path untuk memulakan

Cara menggunakan pemalam pembungkusan springboot untuk mengeluarkan bungkusan balang dan melangsingkan badan

seperti berikut: mulakan

Cara menggunakan pemalam pembungkusan springboot untuk mengeluarkan bungkusan balang dan melangsingkan badan

Jangan mulakan dalam direktori tahap yang sama:

Cara menggunakan pemalam pembungkusan springboot untuk mengeluarkan bungkusan balang dan melangsingkan badan

Antara mereka, -Dloader.path boleh menentukan berbilang direktori, supaya apabila terdapat berbilang perkhidmatan mikro, beberapa biasa Balang yang digunakan diletakkan dalam direktori kongsi yang unik untuk setiap perkhidmatan mikro boleh diletakkan dalam direktori peribadi perkhidmatan mikro (untuk menyelesaikan masalah konflik versi jar). , anda perlu menambah ZIP apabila pembungkusan tidak dinyatakan, -Dloader.path tidak akan berkuat kuasa

Untuk pembungkusan pelangsingan berbilang perkhidmatan mikro, adalah disyorkan untuk menggunakan maven-. pembungkusan jar-plugin untuk mengelakkan beberapa masalah permulaan aplikasi yang disebabkan oleh mekanisme pembungkusan spring-boot-maven-plugin (terperangkap)

Cara menggunakan pemalam pembungkusan springboot untuk mengeluarkan bungkusan balang dan melangsingkan badan 2. Jika terdapat kebergantungan versi yang berbeza:

Contohnya, projek A bergantung pada versi 1.0 pustaka Y, dan projek B bergantung pada versi 2.0 pustaka Y, maka mungkin terdapat konflik pergantungan versi (apabila kedua-dua versi tidak serasi), Penyelesaian: 2.1 adalah konsisten, teruskan menggunakan versi yang sama untuk memastikan versi yang konsisten. Anda boleh menggunakan pengurusan pergantungan versi maven untuk diproses, iaitu, gunakan dalam fail pom induk untuk mengurus versi pergantungan secara seragam

2.2.2.2 pakej, dan meletakkan kebergantungan yang sama ke dalam pakej perang versi pakej diletakkan di bawah pakej kongsi yang sama

Ujian mendapati bahawa kebergantungan dicari dari atas ke bawah apabila mencari yang pertama digunakan. Seperti yang ditunjukkan di bawah, versi comm-0.0.1.jar akan digunakan

Nota:

Menggunakan pemalam spring-boot-maven-plugin, semua pakej balang bergantung akan dibungkus, jadi Anda boleh terus menjalankan pakej JAR yang dijana, yang memudahkan operasi pembangunan kami.

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

Cara menggunakan pemalam pembungkusan springboot untuk mengeluarkan bungkusan balang dan melangsingkan badan

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

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>

Atas ialah kandungan terperinci Cara menggunakan pemalam pembungkusan springboot untuk mengeluarkan bungkusan balang dan melangsingkan badan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam