假设我正在使用 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
于.geometry
algorithms
algorithms
那么,有没有办法提供某种自动依赖,以便添加algorithms
也会添加geometry
?如果是,我该怎么做?如果不是,提供模块化库的惯用方式是什么?我应该组装带有依赖项的罐子吗?
UPD:artifact ...
我不应该只使用from project(':...').components.java
,因为它会同时获取工件和依赖项,对吗?如果我使用,如何分别选择依赖项artifact ...
?