我需要调查Maven和Gradle是否提供相同的灵活性来为多个源文件夹的每个项目生成多个jar文件。
我知道这通常不推荐,但我需要比较这两个构建工具的功能/灵活性(当前不能选择多模块maven项目结构)。
摇篮
在gradle中,这非常简单:
sourceSets {
main {
java {
srcDir 'src'
}
}
other {
java {
srcDir 'other'
}
}
}
task otherJar(type: Jar) {
from sourceSets.other.output
classifier = 'other'
customName = 'other.jar'
}
使用gradle构建时,类文件的组织方式如下:
build
> classes
> main
> com
> other
> com
这非常好,因为它可以“回溯”相应类所源自的源文件夹。因此,可以为每个sourceSet提供相同的包名称,并且仍然可以使用正确的类获得单独的jar文件。
的Maven
在maven中,这似乎不可能。尽管可以使用build-helper-maven-plugin(用于指定多个源文件夹)和maven-jar-plugin(用于构建多个jar文件)的组合,但只能在包级别上拆分源,请参阅{ {3}}中的{3}}。
据我所知,这是因为编译类没有根据maven中的原始源文件夹在目标/类文件夹中进行组织。
所以如果需要:
需要使用gradle(或任何其他提供此灵活性的构建工具)。或者我错过了maven提供同样灵活性的秘密后门?