Au travail, j'ai rencontré un projet Web Java construit avec le framework springboot, qui devait intégrer des fonctions push tierces, j'ai donc utilisé le service push Xiaomi et téléchargé le package jar correspondant. L'introduction de jars locaux dans le projet n'est pas un gros problème. Après avoir écrit le code, il n'y a aucun problème à passer le test de la classe de test. Préparez-vous ensuite à empaqueter et à déployer sur le serveur de développement. Étant donné que le projet est déployé via Tomcat, la méthode d'empaquetage est dans un package de guerre. Après l'empaquetage, téléchargez-le sur le serveur de développement. Après un démarrage réussi, je suis allé tester l'interface push écrite et j'ai constaté qu'elle échouait.
Grâce à l'analyse, nous avons constaté qu'aucun package jar lié au push n'est introduit localement dans le répertoire lib où les jars dépendants du projet sont stockés dans le pack war. Après une demi-heure de lutte, le problème a été résolu. Après l'avoir résolu, j'ai découvert que j'avais en fait oublié les connaissances de base de Maven. Voici un résumé du projet springboot qui présente les packages jar locaux et comment empaqueter les jars dans le dossier lib via l'empaquetage maven :
Remarque : Puisque le pot local est importé ici, vous devez ajouter
<dependency> ... <!-- 表示当前jar是外部引入的,maven不会在repository查找它 --> <scope>system</scope> <!-- 指定引入的外部jar存放的路径,一般将jar包放在项目的某个目录下,通过相对路径指定 --> <systemPath>...</systemPath> </dependency>
<build> <finalName>xxxxxx</finalName> <plugins> <!--配置将第三方jar打进jar包中,跟<packaging>jar</packaging>配合,如果不写,springboot默认是打成jar包--> <!--<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!-- 项目中单独引入第三方jar时,includeSystemScope值要为true <includeSystemScope>true</includeSystemScope> </configuration> </plugin>--> <!-- 打war包 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.2.2</version> <configuration> <webResources> <!-- 配置将第三方jar打进war包中,跟<packaging>war</packaging>配合 --> <webResource> <directory>${pom.basedir}/src/main/resources/lib/</directory> <targetPath>WEB-INF/lib/</targetPath> <includes> <include>**/*.jar</include> </includes> </webResource> </webResources> </configuration> </plugin> </plugins> </build>
Selon les besoins du projet, il peut être déployé en tant que package jar ou en tant que package war. différentes configurations doivent être ajoutées. Si vous devez le regrouper dans un package war, n'oubliez pas d'ajouter la configuration
Vous pouvez le tester en appelant l'interface appropriée, ou vous pouvez observer directement si le fichier jar local importé existe dans le dossier lib du package de déploiement pour déterminer
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!