0

我使用 Maven 并有外部库(煤烟)。我想用 Maven 将此库添加到我的项目中,然后打包到 1 个 uber jar 中。

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

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

但一起它是行不通的,因为在第一步依赖有范围,并且这个依赖不会被添加到 uber jar 中。

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

有可能实现我最初的目标吗?

4

1 回答 1

0

也许对您来说最简单的解决方案是使用您的本地(公司?)存储库,例如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 捆绑在一起。

于 2015-04-30T19:53:41.660 回答