项目开发过程中可能会需要引入一些非maven仓库的存在的jar包,比如jar是ant打包过来的。这个时候maven上传包到仓库可能会很困难,就绪要在项目中手动去引用jar包。
Maven 引入外部Jar包方式
<dependency>
<groupId>dingding</groupId>
<artifactId>dingding</artifactId>
<version>2.8</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/taobao-sdk-java.jar</systemPath>
</dependency>
属性说明:
- groupId:自定义
- artifactId:自定义
- version:自定义
- scope:必须是system
- systemPath:jar包的路径(idea编写的时候会有提示的)
通过上述方式,在开发环境没有什么问题,不会存在什么包找不到等情况。但是,maven
project 部署一般打包发布,所以打包是需要额外配置的(上述的第一二中方式不需要做额外处理)以上方式是maven
引用本地依赖,但只是引用,可能在idea中开发书写代码的时候没有什么问题。但打包或运行会产生,这个时候需要打包得时候把外部jar包打包到可加载jar路径。
处理项目打包
1.resource方式处理打包
<build>
<resources>
<resource>
<directory>lib</directory>
<targetPath>/BOOT-INF/lib/</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
</resources>
</build>
directory
:指定lib文件夹的位置,由于是相对工程根目录,所以直接写上lib即可。
targetPath
:打包到的文件夹位置,写上BOOT-INF/lib即可,或者是WEB-INF/lib。。
includes
:一般都是以jar结尾,就写*/.jar。
2.spring-boot-maven-plugin
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
<configuration>
<!-- 打包进/BOOT-INF/lib/ -->
<includeSystemScope>true</includeSystemScope>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
3.推送包到maven仓库中,然后进行引用
安装jar包到本地仓库中
mvn install:install-file -Dfile=jar包的位置 -DgroupId=上面的groupId -DartifactId=上面的artifactId -Dversion=上面的version -Dpackaging=jar
然后maven引入
<dependency>
<groupId>dingding</groupId>
<artifactId>dingding</artifactId>
<version>2.8</version>
</dependency>
推送包到远程仓库
mvn deploy:deploy-file -DgroupId=com.zhenai.dakehu -DartifactId=dakehu-commons -Dversion=1.0.0-SNAPSHOT -Dpacckaging=jar -Dfile=dakehu-commons-1.0.0-SNAPSHOT.jar -DrepositoryId=maven-snapshots -Durl=http://112.124.33.150:8081/repository/maven-snapshots/
这3中方式任选一种即可。
4.maven clean deploy
如果直接有源码的话可以直接在idea中先clean再deploy上去。不过要在根pom中先配置好仓库地址信息。
<!--定义snapshots库和releases库的nexus地址-->
<distributionManagement>
<repository>
<id>nexus-releases</id>
<url>
http://172.17.103.59:8081/nexus/content/repositories/releases/
</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<url>
http://172.17.103.59:8081/nexus/content/repositories/snapshots/
</url>
</snapshotRepository>
</distributionManagement>
maven中的仓库分为两种,snapshot快照仓库和release发布仓库。snapshot快照仓库用于保存开发过程中的不稳定版本,release正式仓库则是用来保存稳定的发行版本。定义一个组件/模块为快照版本,只需要在pom文件中在该模块的版本号后加上-SNAPSHOT即可(注意这里必须是大写)
Idea操作
命令操作
mvn clean install -s xxxSetting.xml