如何解决在一个Maven工件中发布多个Gradle模块
我有一个图书馆项目,该项目由两个不同的API(a
和b
)组成,它们应该在相同的core
和base
代码上运行。 core
对a
或b
的用户不可见,因此对implementation
有core
依赖性。但是base
暴露给a
或b
的用户,因此对api
有base
依赖性。
这一切都很好,只要您留在Gradle世界中即可。但是,当您使用a
Gradle插件发布b
和maven-publish
时,情况变得更加复杂。它分别为每个模块创建一个工件,并(正确地)概述了它们之间的依赖关系。但是我不想分别公开core
和base
。相反,我想将它们分别捆绑到a
和b
的一个工件中,其中core
中的类型保持内部,而base
中的类型公开。
是否可以使用maven-publish
来做到这一点?
解决方法
您将要创建胖/超级JAR。有很多教程,但是一种常见的方法是使用Shadow插件:https://imperceptiblethoughts.com/shadow/
您可以将Shadow插件配置为将core
和base
嵌入/包含在a
和b
中,而不必发布它们。
有4个项目
a (api)
-取决于base
,core
b (api)
-取决于base
,core
core (lib)
-取决于base
base (api)
-无
假设所有人都使用java-library
插件构建。
如果我的问题没错-您希望最终用户看到api的-a,b,base
而不是core
-我假设这适用于DEV /编译时;
如果上面是正确的-这不是maven-publish;而是依赖声明
请参阅https://docs.gradle.org/current/userguide/java_library_plugin.html#sec:java_library_separation
在a
和b
build.gradle中
api base
implementation core
在core
build.gradle
api base
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。