前言
有的Jar是Maven仓库中没有的,我们要引用项目下的Jar,我们可能会这么写
1 2 3 4 5 6 7
| <dependency> <groupId>cn.psvmc</groupId> <artifactId>mysql8</artifactId> <version>1.1</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/libs/mysql8-1.1.jar</systemPath> </dependency>
|
但是当我们打包的时候却发现
这种方式引用的Jar并不能打包到最终的Jar中。
解决方法有两种:
方式1
使用Maven 在运行项目前先把Jar注册到Maven仓库中
环境变量中添加Maven的位置
D:\Program Files\JetBrains\IntelliJ IDEA 2024.1.1\plugins\maven\lib\maven3\bin
install-jar.bat
1 2 3
| set MYPATH=%cd% call mvn install:install-file -Dfile=%MYPATH%\src\main\libs\mysql8-1.1.jar -DgroupId="cn.psvmc" -DartifactId="mysql8" -Dversion="1.1" -Dpackaging=jar pause
|
运行install-jar.bat
项目下引用
1 2 3 4 5
| <dependency> <groupId>cn.psvmc</groupId> <artifactId>mysql8</artifactId> <version>1.1</version> </dependency>
|
方式2(推荐)
依赖
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <dependency> <groupId>cn.psvmc</groupId> <artifactId>mysql8</artifactId> <version>1.1</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/libs/mysql8-1.1.jar</systemPath> </dependency>
<dependency> <groupId>com.yxkj</groupId> <artifactId>yxdp-algorithm</artifactId> <version>1.0.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/libs/yxdp-algorithm-1.0.0.jar</systemPath> </dependency>
|
插件配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>com.xhkjedu.TCS</mainClass> </manifest> <manifestEntries> <Class-Path>.</Class-Path> </manifestEntries> </archive> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> <configuration> <descriptors> <descriptor>src/assembly/assembly.xml</descriptor> </descriptors> </configuration> </execution> </executions> </plugin>
|
添加 src/assembly/assembly.xml 文件配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| <assembly> <id>jar-with-dependencies</id> <formats> <format>jar</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> <dependencySets> <dependencySet> <outputDirectory>/</outputDirectory> <useProjectArtifact>true</useProjectArtifact> <unpack>true</unpack> <scope>runtime</scope> </dependencySet> <dependencySet> <outputDirectory>/</outputDirectory> <useProjectArtifact>true</useProjectArtifact> <unpack>true</unpack> <scope>system</scope> </dependencySet> </dependencySets> </assembly>
|
可以看到
主要增加了scope类型为system的配置;这样在打包的时候,就会把本地jar也打包进去