一.引言
scala / java 项目引用非官方依赖 jar 包时,需要自定义并打入最终的 jar 包,经过试验以下方案可以实现。
二.添加 jar 包到 maven 库 👍
第三方自定义 jar 包可以添加到本地 maven 库中,随后即可 mvn package 打入到最终的项目 jar 包中,该方法最方便。创建 install.sh 文件,jar_path 为第三方自定义 jar 包在设备的位置,groupId、artifactId 和 版本号 version 自己定义,执行脚本后 echo 会打印出对应依赖的 pom 格式,粘贴复制到项目 maven 中后打包即可添加该 jar。
#!/bin/bash jar_path=./lib/yourself.jar jar_groupId=com.self DartifactId=myjar Dversion=0.1 mvn install:install-file -Dfile=$jar_path -DgroupId=$jar_groupId -DartifactId=$DartifactId -Dversion=$Dversion -Dpackaging=jar -DgeneratePom=true pom="<dependency>\n \t<groupId>$jar_groupId</groupId>\n \t<artifactId>$DartifactId</artifactId>\n \t<version>$Dversion</version>\n </dependency>" echo $pom
三.添加 jar 包到 项目目录
上面的方法可以将对应第三方 jar 添加至最终的 jar 包中,除此之外,也可以将第三方 jar 包放到项目中,也可以实现上述效果。
1.添加 jar 包到项目
可以直接在 root 目录下创建 lib 文件夹,也可以在 src/main/resources 文件夹下创建 lib 文件夹,然后将第三方 jar 包拷贝至创建的目录中。
编辑
2.添加 jar 包到 maven
File -> Project Structrue -> Libraries -> + -> java 到项目对应位置选择 jar 包即可添加,后面项目中即可正常使用该第三方 jar 包。
编辑
3.第三方 jar 包打入最终 jar 包
正常情况下直接 mvn package 即可将第三方 jar 包打入,如果打包不生效就在 pom 中添加如下 plugin 配置:
<plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.3</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> <compilerArguments> <extdirs>${project.basedir}/lib</extdirs> </compilerArguments> </configuration> </plugin> </plugins>
extdirs 的地址中 ${project.basedir} 是该项目的根目录,后续 lib 为添加的项目地址,如果添加到 src/main/resources/lib 下,则修改为 ${project.basedir}/src/main/resources/lib。
四.总结
这里推荐使用第一个 👍 的方法,整体比较简洁省事,如果第三方 jar 包通过 --jars 传入,则 lib 下对应的第三方 jar 包只用于编译,此时使用 scope = syetem 的打包方式即可,这样可以压缩最终 jar 包的大小,减小传输量 :
<dependency> <groupId>$groupId</groupId> <artifactId>$artifactId</artifactId> <version>$version</version> <scope>system</scope> <systemPath>${project.basedir}/lib/your.jar</systemPath> </dependency>