Il est pratique pour le démarrage ultérieur de Tomcat de spécifier le chemin du package de dépendances
<!--拷贝依赖到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>
La structure des répertoires après avoir utilisé ce plug-in pour construire Il existe un répertoire lib supplémentaire (c'est-à-dire le chemin spécifié par le outputDirectory configuré ci-dessus), qui contient le package jar dépendant :
<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>
pour configurer l'emballage ci-dessus. Après cela, le package jar correspondant sera exclu, ce qui rendra le package jar plat créé par le plug-in plus petit, ce qui facilitera le téléchargement vers le serveur pour la publication. L'effet est le suivant. Le répertoire lib sous le répertoire BOOT-INF a disparu :
Initialement saisi, la structure dans le package jar est
Spécifiez ensuite le chemin du package jar -Dloader. .path="../lib" au démarrage du projet, afin d'obtenir l'effet minceur, où les dépendances sont placées dans D:develop/shared/ Dans le répertoire fjar, exécutez la commande run
java -Dloader.path="D:develop/shared/fjar" -jar mytest.jar
Remarque : Un autre démarrage la solution est de spécifier le chemin sans ajouter -Dloader.path="D:develop/shared/fjar" et d'utiliser directement la commande suivante pour démarrer
java -jar mytest.jar
Utilisez le démarrage ci-dessus Si c'est le cas, vous devez ajouter le plugin maven-jar-plugin plug-in et configurez l'attribut
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <!--addClasspath表示需要加入到类构建路径--> <addClasspath>true</addClasspath> <!--classpathPrefix指定生成的Manifest文件中Class-Path依赖lib前面都加上路径,构建出lib/xx.jar--> <classpathPrefix>lib/</classpathPrefix> <mainClass>com.common.util.CommonUtilsApplication</mainClass> </manifest> </archive> </configuration> </plugin>
L'effet du plug-in ci-dessus est d'ajouter le fichier jar correspondant au chemin de classe au fichier MANIFEST.MF sous le répertoire META_INF du package, de sorte que lors du premier démarrage de l'application, seules les dépendances de version requises seront chargé selon le Class-Path. (Pour résoudre le problème des conflits de références de chargement multi-versions dans le répertoire partagé), cet effet équivaut à l'ajout du paramètre -classpath xxx (jar spécifique).
Pour le moment, placez simplement le répertoire jar requis lib dans le même répertoire que le xxx.jar à exécuter. Vous n'avez pas besoin d'ajouter le paramètre -Dloader.path lors du démarrage si le répertoire lib et le xxx. jar à exécuter ne sont pas dans le même répertoire, s'il s'agit du même répertoire de niveau, vous devez utiliser -Dloader.path pour démarrer
comme suit : Démarrer dans le répertoire de même niveau
Ne pas démarrer dans le répertoire de même niveau :
où -Dloader.path peut spécifier plusieurs répertoires, de sorte que lorsqu'il existe plusieurs microservices, certains fichiers jar utilisés publiquement puissent être placés dans un répertoire partagé et que des fichiers jar uniques à chaque microservice puissent être placés dans le répertoire privé du microservice (résoudre le problème des conflits de versions jar ), les exemples sont les suivants :
Remarque :
Pour alléger l'empaquetage de plusieurs microservices, il est recommandé d'utiliser l'empaquetage maven-jar-plugin pour éviter certains problèmes de démarrage d'application causés par le printemps. -mécanisme d'empaquetage boot-maven-plugin (piégé)
Par exemple, le projet A dépend de la version 1.0 de la bibliothèque Y et le projet B dépend de la version 2.0 de la bibliothèque Y. il peut y avoir un conflit de dépendance de version (lorsque les deux versions sont incompatibles). Solution :
2.1 Tant que les versions sont cohérentes, continuez à utiliser la même version pour garantir des versions cohérentes. Vous pouvez utiliser la gestion des dépendances de version de maven pour le traitement, c'est-à-dire utiliser
2.2. Laissez les projets dépendre des versions requises et placez-les dans le package war, puis ajoutez. autres packages jar de la même version. Placez-le sous le même package partagé
Le test révèle que les dépendances sont recherchées de haut en bas lors de la recherche. Si cela correspond, utilisez la première comme indiqué ci-dessous, le comm-0.0. La version 1.jar sera utilisée
Remarque :
En utilisant le plug-in spring-boot-maven-plugin, tous les packages jar dépendants seront empaquetés, de sorte que le package JAR généré puisse être exécuté directement, simplifier nos opérations de développement.
使用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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!