maven搭建的springboot项目引入本地jar包配置方法
方法有2个,一个是将jar包导入到maven仓库 ,另一个是配置maven引用仓库之外的jar包 。
将jar包导入到maven仓库 这个方法是最推荐的,也是所有maven项目通用的,不仅仅适用于springboot项目。一般是有2种配置方法,一种是编写mvn命令脚本导入 ,另一种是使用插件maven-install-plugin 。
编写mvn命令导入 命令如下
1 mvn install:install-file -Dfile=XXX.jar -DgroupId=com.XXX -DartifactId=XXX -Dversion=X.X.X -Dpackaging=jar
其中:
-Dfile是jar包路径。
-DgroupId是maven坐标的groupId,如:org.apache.commons。
-DartifactId是maven坐标的artifactId,如:commons-lang3。
-Dversion是maven坐标的version,如:3.4。
比如jar包为not-in-repo.jar,那么可以在shell中进入到该jar包的目录,执行如下命令。
1 mvn install:install-file -Dfile=not-in-repo.jar -DgroupId=online.dinghuiye.maven -DartifactId=not-in-repo -Dversion=0.0.1-SNAPSHOT -Dpackaging=jar
使用插件maven-install-plugin 需要按如下配置pom的plugin
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 <project > <build > <plugins > <plugin > <groupId > org.apache.maven.plugins</groupId > <artifactId > maven-install-plugin</artifactId > <version > 2.5.2</version > <executions > <execution > <id > install-jar</id > <phase > clean</phase > <configuration > <file > ${basedir}/lib/not-in-repo.jar</file > <repositoryLayout > default</repositoryLayout > <groupId > online.dinghuiye.maven</groupId > <artifactId > not-in-repo</artifactId > <version > 0.0.1-SNAPSHOT</version > <packaging > jar</packaging > <generatePom > true</generatePom > </configuration > <goals > <goal > install-file</goal > </goals > </execution > </executions > </plugin > </plugins > </build > </project >
其中,
标签<file>是jar包的具体路径,${basedir}就是pom.xml所在的路径。
标签<groupId><artifactId><version>是maven坐标,同上面将jar包导入到maven仓库的案列。
配置好后,命令行执行或者ide中执行mvn clean即可以将jar包导入到maven仓库。
配置maven引用仓库之外的jar包 maven项目直接引入仓库之外的jar包的方式并不推荐,但是有时候不能执行jar包导入到maven仓库的操作时,也就只有使用这个方法了。
pom中依赖配置如下
1 2 3 4 5 6 7 8 9 10 11 <project > <dependencies > <dependency > <groupId > online.dinghuiye</groupId > <artifactId > not-in-repo</artifactId > <version > 0.0.1-SNAPSHOT</version > <scope > system</scope > <systemPath > ${basedir}/lib/not-in-repo.jar</systemPath > </dependency > </dependencies > </project >
其中,
标签<scope>配置为system,表示从本地获取,不会从maven仓库下载,但必须配置<systemPath>标签。
标签<systemPath>配置为jar包路径,${basedir}为pom.xml所在目录。
标签<groupId><artifactId><version>是maven坐标,同上面将jar包导入到maven仓库的案列。
这个时候执行mvn package时,一般的maven项目都可以打包成功了,但是springboot会出现如下提示
1 2 3 4 5 6 [WARNING] Some problems were encountered while building the effective model for xxx.xxx.xxx.xxx:xxx:pom:xxx [WARNING] 'dependencies.dependency.systemPath' for xxx.xxx:xxx:jar should not point at files within the project directory, ${basedir}/lib/xxx.jar will be unresolvable by dependent projects @ line xxx, column xxx [WARNING] [WARNING] It is highly recommended to fix these problems because they threaten the stability of your build. [WARNING] [WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
此时需要将pom中的标签<packaging>设置为war(原始是pom,这个地方是非常关键的),另外还需要将springboot的maven插件添加标签<includeSystemScope>并配置为true,如下,否则打出来的war包的lib下面没有jar包。
1 2 3 4 5 6 7 8 9 10 11 12 13 <project > <build > <plugins > <plugin > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-maven-plugin</artifactId > <configuration > <includeSystemScope > true</includeSystemScope > </configuration > </plugin > </plugins > </build > </project >