引入第三方jar后的maven build问题 2021-07-14 15:53 SpringBoot多模块项目,其中有一个子模块gateway-admin是单独一个服务,他的前端项目在另一个子模块gateway-admin-ui中。 我们这里采用的是将gateway-admin-ui打包成jar包放入gateway-admin的lib目录,并在gateway-admin的pom中采用system作用域依赖这个前端jar。 目录如下: ![](http://minio.riun.xyz/riun1/6fd57316-6cd9-4891-ab10-e1d80b3f5ff1.png) 过程中发现一个问题,在idea中启动gateway-admin服务,可以正常访问前端页面,正常调用后端api。但是一旦将gateway-admin进行maven package,然后用java -jar gateway-admin.jar的方式,打开页面就会404,任何页面都无法打开。 最终发现打出的jar包解压出来后,在BOOT-INF\lib目录下并没有找到gateway-admin-ui-0.0.4-SNAPSHOT.jar。即在jar中没有将前端包的依赖打进来。 于是定位到问题出在了gateway-admin的maven打包环节。在gateway-admin的pom中,正确的写法如下: ```xml <!--省略其他内容...--> <dependency> <groupId>com.ppcredit.cloud</groupId> <artifactId>gateway-admin-ui</artifactId> <version>0.0.4-SNAPSHOT</version> <scope>system</scope> <systemPath>${project.basedir}/lib/gateway-admin-ui-0.0.4-SNAPSHOT.jar</systemPath> </dependency> <!--maven build插件如下--> <build> <!--扫描ftl文件--> <resources> <resource> <filtering>false</filtering> <directory>src/main/resources</directory> <excludes> <exclude>*.yml</exclude> <exclude>*.properties</exclude> </excludes> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.ftl</include> </includes> </resource> </resources> <finalName>${project.artifactId}</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <version>1.3.1</version> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> <goal>build-info</goal> </goals> </execution> </executions> <!--就是因为没有写configuration节点,才导致最终没有将lib目录下手动引入的Jar包打进去--> <configuration> <includeSystemScope>true</includeSystemScope> <executable>true</executable> </configuration> </plugin> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.0.2</version> <executions> <execution> <id>copy-resources</id> <!-- here the phase you need --> <phase>validate</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>${basedir}/target</outputDirectory> <resources> <resource> <directory>deploy</directory> <filtering>false</filtering> </resource> </resources> </configuration> </execution> </executions> </plugin> </plugins> </build> ``` 这样再对gateway-admin进行package,打成的jar包解压出来,就能在BOOT-INF\lib目录下找到所有gateway-admin/lib中手动引入的jar了。 对前端ui修改调式时,只需将后端服务起来,并npm run dev起来前端,就能在前端页面上调式,完成后对前端ui包进行maven package,然后copy包到后端服务的lib下。 --END--
发表评论