【发布时间】:2025-11-24 15:30:01
【问题描述】:
假设我正在使用 Gradle 进行模块化库开发。在我的根项目中,我有子项目geometry、algorithms、visualizer,我想发布每个项目的 jar 工件。
至于现在在我的根 build.gradle 我有以下部分:
apply plugin: 'maven-publish'
publishing {
publications {
publishDemos(MavenPublication) {
groupId 'ru.ifmo.ctddev.igushkin.cg'
artifactId 'geometry'
version globalVersion
artifact project(':geometry').tasks.getByName('jar')
}
publishAlgorithms(MavenPublication) {
groupId 'ru.ifmo.ctddev.igushkin.cg'
artifactId 'algorithms'
version globalVersion
artifact project(':algorithms').tasks.getByName('jar')
}
publishVisualizer(MavenPublication) {
groupId 'ru.ifmo.ctddev.igushkin.cg'
artifactId 'visualizer'
version globalVersion
artifact project(':visualizer').tasks.getByName('jar')
}
}
}
我的第一个问题:有没有更简短的方式来描述这些出版物?例如,我想声明,对于每个子项目,我都需要一个出版物,其名称中设置了 artifactId。
接下来,我的子项目相互依赖,algorithms 和 visualizer 都依赖于来自 geometry 的类,但此时 jar 不包含依赖项,例如,用户必须如果他们想使用algorithms,请将依赖项添加到geometry 和algorithms。
那么,有没有办法提供某种自动依赖,以便添加algorithms 也会添加geometry?如果是,我该怎么做?如果不是,提供模块化库的惯用方式是什么?我应该组装带有依赖项的 jars 吗?
UPD:我应该只使用from project(':...').components.java 而不是artifact ...,因为它会同时获取工件和依赖项,对吗?如果我使用artifact ...,如何单独选择依赖项?
【问题讨论】:
标签: gradle dependencies publishing modularity maven-publish