微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在一个Maven工件中发布多个Gradle模块

如何解决在一个Maven工件中发布多个Gradle模块

我有一个图书馆项目,该项目由两个不同的API(ab)组成,它们应该在相同的corebase代码上运行。 coreab用户不可见,因此对implementationcore依赖性。但是base暴露给ab用户,因此对apibase依赖性。

Module structure

这一切都很好,只要您留在Gradle世界中即可。但是,当您使用a Gradle插件发布bmaven-publish时,情况变得更加复杂。它分别为每个模块创建一个工件,并(正确地)概述了它们之间的依赖关系。但是我不想分别公开corebase。相反,我想将它们分别捆绑到ab一个工件中,其中core中的类型保持内部,而base中的类型公开。

是否可以使用maven-publish来做到这一点?

解决方法

您将要创建胖/超级JAR。有很多教程,但是一种常见的方法是使用Shadow插件:https://imperceptiblethoughts.com/shadow/

您可以将Shadow插件配置为将corebase嵌入/包含在ab中,而不必发布它们。

,

有4个项目

a (api)-取决于basecore
b (api)-取决于basecore
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

ab build.gradle中

api base
implementation core

core build.gradle

api base

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。