後続の Tomcat の起動で依存関係を指定するのを容易にします。パッケージ パス
<!--拷贝依赖到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>
このプラグインを使用してビルドした後、ディレクトリ構造には追加の lib ディレクトリ (つまり、上で構成した出力ディレクトリで指定されたパス) が追加され、これには依存する jar パッケージが含まれます。
1.2 springboot プロジェクトは spring-boot-maven-plugin を使用してプラグインをパッケージ化します<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>
java -Dloader.path="D:develop/shared/fjar" -jar mytest.jar注: 別の起動ソリューションは、-Dloader.path="D:develop/shared/fjar" を追加せずにパスを指定し、次のように直接使用することです。上記の起動を使用するには、maven-jar-plugin プラグインを追加し、
java -jar mytest.jar上記のプラグインの効果は、クラスパスに対応する jar をパッケージの META_INF ディレクトリの下の MANIFEST.MF ファイルに追加することです。使用したばかりの jar を後で使用できるようにする 起動時に、必要なバージョンの依存関係のみがクラスパスに従ってロードされます (共有ディレクトリでの複数バージョンのロード参照の競合の問題を解決するため)。この効果は同等です。パラメータ -classpath xxx (特定の jar) を追加します。 この時点では、必要な jar ディレクトリ lib を実行する xxx.jar と同じディレクトリに置くだけです。起動時に -Dloader.path パラメータを追加することはできません。lib ディレクトリが同じ場合は、実行する xxx.jar として、 xxx.jar が同じレベルのディレクトリにない場合は、次のように -Dloader.path を使用して
を開始する必要があります。同レベルのディレクトリから開始してください
同じレベルのディレクトリから開始しないでください:
# その中に、 - Dloader.path は複数のディレクトリを指定できるため、複数のマイクロサービスがある場合、いくつかの共通の使用される jar は共有ディレクトリに配置されます。各マイクロサービスに固有の jar はマイクロサービスのプライベート ディレクトリに配置できます (問題を解決するため)。 jar バージョンの競合) 例は次のとおりです:
注:
1. -Dloader.path を使用する場合、パッケージ化するときに
使用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>
以上がspringboot パッケージング プラグインを使用して jar パッケージを削除し、スリム化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。