【问题标题】:Linking Java program against uber jar将 Java 程序与 uber jar 链接起来
【发布时间】:2017-04-19 08:14:47
【问题描述】:

我有一个 Java 库,用于处理我从事的各种服务的 REST 交互。该项目生成了一个 uber jar,它使用 maven 重定位将一些广泛使用的库放入单独的命名空间中,以免使用它的服务出现重叠问题。我想针对这个以 all 结尾的 uber jar 进行构建,但是当我从其他项目中引用它时,它只会拉入非 uber jar。

我的 Maven 本地仓库如下所示:

_remote.repositories
rest-library-1.0-SNAPSHOT-development-all-sources.jar
rest-library-1.0-SNAPSHOT-development-all.jar
rest-library-1.0-SNAPSHOT-javadoc.jar
rest-library-1.0-SNAPSHOT-sources.jar
rest-library-1.0-SNAPSHOT.jar
rest-library-1.0-SNAPSHOT.pom
maven-metadata-local.xml

我已尝试导入 1.0-SNAPSHOT、1.0-SNAPSHOT-development、1.0-SNAPSHOT-development-all。但是第一个只导入了非uber jar,其余的都找不到。我需要做什么才能链接到 all jar?

另外使用 provided 在这里不起作用,因为我在 spark 环境中使用它,必须使用该库的旧版本导致冲突。

【问题讨论】:

    标签: java maven apache-spark jar


    【解决方案1】:

    分类器允许区分从同一个 POM 构建但内容不同的工件。它是一些可选且任意的字符串 - 如果存在 - 会在版本号之后附加到工件名称

    所以你可以通过添加以下依赖项来做到这一点

    <dependency>
        <groupId>your-group-id</groupId>
        <artifactId>rest-library</artifactId>
        <version>1.0-SNAPSHOT</version>
        <classifier>development-all</classifier>
    </dependency>
    

    【讨论】:

    • 谢谢。正是我需要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    • 2014-08-07
    相关资源
    最近更新 更多