gpt4 book ai didi

java - 在gradle多项目中,如何构建单个jar并将其发布到maven?

转载 作者:太空宇宙 更新时间:2023-11-04 09:12:04 24 4
gpt4 key购买 nike

首先,请原谅我糟糕的英语。 :P

项目结构如下:

parent
|-- admin // spring boot web application for management.
| |-- client // SDK for other applications. publish it to maven.
| | |-- src
| | `-- build.gradle
| |-- public // common part of admin and client of it. Such as DTOs.
| | |-- src
| | `-- build.gradle
| |-- src
| `-- build.gradle
|-- common // common part of admin and server.
| |-- src
| `-- build.gradle
|-- public // common part of admin, server and clients of them.
| |-- src
| `-- build.gradle
|-- server // spring boot web application for normal user.
| |-- client // SDK for other applications. publish it to maven.
| | |-- src
| | `-- build.gradle
| |-- public // common part of server and client of it. Such as DTOs.
| | |-- src
| | `-- build.gradle
| |-- src
| `-- build.gradle
|-- build.gradle
`-- settings.gradle

当我将 :server:client 发布到 maven 时,它会将 :server:public 作为依赖项放入 pom 文件中。这需要我还分别发布 :server:public:public 到 maven。

但我想要的是将 :server:client 作为单个库,并包含来自 :server:public:public 的类文件。

此外,在构建 :server 作为 Spring Boot 应用程序时也存在类似的问题。它将依赖的项目构建成 jar,然后将它们打包到 :server 中。而不是打包他们的类文件。

是否有可能使 gradle 按我的预期工作?或者有没有更好的设计,既可以满足代码的复用,又不需要发布多个库?

有一个演示项目:https://github.com/cody1996/demo-gradle-build

最佳答案

是的,你可以用 gradle 做你想做的事。您可以使用 gradle 插件来完成创建单个 jar 的工作,也可以使用自定义任务从不同的子项目中手动获取类文件并从中创建单个 Artifact 。

标准 gradle fat jar 插件 - shadow plugin

如果您想手动执行 -

task singleJar(type: Jar) {
baseName = 'app-jar'
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
with jar
}

关于java - 在gradle多项目中,如何构建单个jar并将其发布到maven?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59557545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com