如何通过gradle将本地依赖项捆绑到jar构建中?

问题描述 投票:0回答:1

问题是我有三个兄弟项目。这里只有两个很重要,我们称之为共享和客户端。客户端依赖于共享,因为我已经完成了所有本地操作,我在build.gradle中为客户端项目定义了依赖项,例如compile project(':shared')。现在我想借助maven-publish插件发布客户端。当我这样做时,依赖于客户端的每个项目都会失败,因为它无法在任何地方找到共享项目。

现在,它完全有意义,它不会在构建客户端的任何地方发布。我现在希望客户端项目的工件包含共享项目的所有类。此外,我希望客户端工件不再说它取决于共享项目,但它现在应该依赖于共享所依赖的所有内容。

我已经做了大量的研究,我发现this question and answer展示了如何在生成的工件中包含特定的依赖关系。问题在于包括共享项目到jar的所有依赖项以及共享项目的文件。

我的问题是:

  1. 这是一种合理的方法吗?如果没有什么会更好?
  2. 我怎样才能将直接依赖shared的类放入由client构建的jar中?
  3. 如何从maven-publish插件生成的工件中排除shared但不是它的依赖关系?
gradle
1个回答
0
投票

我找到了问题2的答案:

在build.gradle中,您需要添加以下内容:

configurations {
    localCompile.transitive = false
    compile.extendsFrom(localCompile)
}

jar {
    from {
        configurations.localCompile.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

然后简单地定义所有本地依赖项,如localCompile project(":kuroji-websocket-shared")

© www.soinside.com 2019 - 2024. All rights reserved.