我使用 Maven 并有外部库(煤烟)。我想用 Maven 将此库添加到我的项目中,然后打包到 1 个 uber jar 中。
1)要添加库,我可以使用本地仓库(示例)。
2)要获得一个有依赖关系的罐子,我可以使用 shade-plugin 或其他。
但一起它是行不通的,因为在第一步依赖有范围,并且这个依赖不会被添加到 uber jar 中。
我知道我可以安装 mvn,但它只能在我的机器上运行。
有可能实现我最初的目标吗?
也许对您来说最简单的解决方案是使用您的本地(公司?)存储库,例如Artifactory。
但是,如果不可能,您可以使用本地项目内存储库(如您的示例)并将其保存在您的 vcs 中。
<repository>
<id>in-project</id>
<name>In Project Repo</name>
<url>file://${project.basedir}/libs</url>
</repository>
唯一的技巧是如何将工件(jars)获取到该本地存储库:
mvn deploy:deploy-file -Dfile=fooLib.jar -DgroupId=com.test -DartifactId=fooLib -Dversion=1.0.1 -Dpackaging=jar -Durl=file://pathTo/libRepo -DrepositoryId=in-project
你只需将它用作任何其他依赖项
<dependency>
<groupId>com.test</groupId>
<artifactId>fooLib</artifactId>
<version>1.0.1</version>
</dependency>
绝对不要使用system
scope,因为此类依赖项预计会在系统中找到,因此不会与 JAR 捆绑在一起。