问题是我有三个同级项目。这里只有两个很重要,让我们称它们为共享和客户端。客户端依赖于共享,并且由于我在本地完成了所有工作,因此我在build.gradle中为客户端项目定义了这种依赖关系,例如编译project(':shared')。现在,我想借助maven-publish插件发布客户端。当我这样做时,依赖客户端的每个项目都会失败,因为它无法在任何地方找到共享项目。
现在完全有意义,因为在构建客户端时,它不会发布在任何地方。现在,我希望客户端项目的 Artifact 包括共享项目中的所有类。我也希望客户端 Artifact 不再说它依赖于共享项目,但是现在它应该依赖于共享所依赖的一切。
我已经做了大量研究,我发现this question and answer展示了如何将特定的依赖项包含到结果 Artifact 中。这样做的问题是,将共享项目的所有依赖项都包含在jar中,以及共享项目的文件中。
我的问题是:
shared
的类放入
client
构建的jar中? shared
,但不排除它的依赖性Maven发布插件生成的 Artifact ?
最佳答案
我找到了问题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")
。
关于gradle - 如何通过gradle将本地依赖项捆绑到jar构建中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49053306/