如何使用Maven添加外部jar库,可以跟随完整(包含外部jar)包装?

时间:2015-04-30 17:34:52

标签: java maven jar maven-shade-plugin uberjar

我使用Maven并拥有外部库(soot)。我想用Maven将这个库添加到我的项目中,然后打包成1个超级jar。

1)要添加库,我可以使用本地仓库(example)。

2)要获得具有依赖关系的jar,我可以使用shade-plugin或其他。

但是它在一起并不起作用,因为在第一步依赖有范围,并且这种依赖不会被添加到超级jar。

我知道我可以安装mvn,但它只能在我的机器上运行。

是否有可能实现我的初始目标?

1 个答案:

答案 0 :(得分:0)

也许对您来说最简单的解决方案是使用您的本地(公司?)存储库,如Artifactory

但是,如果不可能,您可以使用本地项目内存储库(从example开始)并将其保存在您的vcs中。

<repository>
    <id>in-project</id>
    <name>In Project Repo</name>
    <url>file://${project.basedir}/libs</url>
</repository>

唯一的技巧是如何将工件(罐子)送到本地存储库:

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捆绑在一起。