文章首发于:clawhub.club


最近在重构公司的老项目代码,将jar包通过maven管理,有些包不存在于maven仓库,所以要通过maven将本地jar打到最终的包中。

1
2
3
4
5
6
7
8
9
<!--淘宝大鱼-->
<dependency>
<groupId>com.taobao</groupId>
<artifactId>taobao-sdk-java-auto</artifactId>
<systemPath>${project.basedir}/lib/taobao-sdk-java-auto_1455552377940-20160816.jar</systemPath>
<version>1455552377940-20160816</version>
<scope>system</scope>
</dependency>

pom文件的build节点下必须增加资源配置,否则jar不会打进去。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<build>
<resources>
<resource>
<directory>${project.basedir}/lib</directory>
<targetPath>BOOT-INF/lib/</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<targetPath>BOOT-INF/classes/</targetPath>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

其中各个标签含义:

  • dependency:每个dependency都对应一个jar包。
  • groupId:项目的全球唯一标识符,通常使用全限定的包名区分该项目和其他项目。并且构建时生成的路径也是由此生成, 如com.mycompany.app生成的相对路径为:/com/mycompany/app
  • artifactId:构件的标识符,它和group ID一起唯一标识一个构件。换句话说,你不能有两个不同的项目拥有同样的artifact ID和groupID;在某个 特定的group ID下,artifact ID也必须是唯一的。构件是项目产生的或使用的一个东西,Maven为项目产生的构件包括:JARs,源 码,二进制发布和WARs等。
  • systemPath:系统路径
  • version:项目当前版本,格式为:主版本.次版本.增量版本-限定版本号
  • scope:maven认为,程序对外部的依赖会随着程序的所处阶段和应用场景而变化,所以maven中的依赖关系有作用域(scope)的限制。scope包含如下的取值:compile(编译范围)、provided(已提供范围)、runtime(运行时范围)、test(测试范围)、system(系统范围)
  • ${project.basedir}:项目基础路径
  • build:构建项目需要的信息
  • resources:这个元素描述了项目相关的所有资源路径列表,例如和项目相关的属性文件,这些资源被包含在最终的打包文件里。
  • resource:这个元素描述了项目相关或测试相关的所有资源路径。
  • directory:描述存放资源的目录,该路径相对POM路径
  • targetPath:描述了资源的目标路径。该路径相对target/classes目录(例如${project.build.outputDirectory})。举个例 子,如果你想资源在特定的包里(org.apache.maven.messages),你就必须该元素设置为org/apache/maven /messages。然而,如果你只是想把资源放到源码目录结构里,就不需要该配置。
  • includes:包含的模式列表.
  • include:包含的模式,例如**/*.xml.
  • plugins:使用的插件列表 。
  • plugin:plugin元素包含描述插件所需要的信息。

参考:
maven的pom.xml文件标签含义
maven项目打包时外部引入jar包无法打到项目中的解决方案
Spring Boot Maven项目使用SystemPath引用第三方平台遇到的大坑