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:
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:
Struktur pakej jar asal adalah seperti berikut
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
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
seperti berikut: mulakan
Jangan mulakan dalam direktori tahap yang sama: 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 menambah2. 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
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
<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>
<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>
<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!