问题是我有三个兄弟项目。这里只有两个很重要,我们称之为共享和客户端。客户端依赖于共享,因为我已经完成了所有本地操作,我在build.gradle中为客户端项目定义了依赖项,例如compile project(':shared')。现在我想借助maven-publish插件发布客户端。当我这样做时,依赖于客户端的每个项目都会失败,因为它无法在任何地方找到共享项目。
现在,它完全有意义,它不会在构建客户端的任何地方发布。我现在希望客户端项目的工件包含共享项目的所有类。此外,我希望客户端工件不再说它取决于共享项目,但它现在应该依赖于共享所依赖的所有内容。
我已经做了大量的研究,我发现this question and answer展示了如何在生成的工件中包含特定的依赖关系。问题在于包括共享项目到jar的所有依赖项以及共享项目的文件。
我的问题是:
shared
的类放入由client
构建的jar中?shared
但不是它的依赖关系?我找到了问题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")
。