我尝试使用Java插件功能(https://docs.gradle.org/5.3-rc-1/userguide/feature_variants.html)声明相同依赖项的2个版本,并在最后生成2个jar:
java {
registerFeature('v1') {
usingSourceSet(sourceSets.main)
}
registerFeature('v2') {
usingSourceSet(sourceSets.main)
}
}
dependencies {
compileOnly project(':djobi-core')
v1Implementation(group: 'org.elasticsearch', name: 'elasticsearch-spark-13_' + scalaVersion, version:'6.2.2') {
exclude group: "org.scala-lang"
}
v2Implementation(group: 'org.elasticsearch', name: 'elasticsearch-spark-13_' + scalaVersion, version:'6.3.2') {
exclude group: "org.scala-lang"
}
}
ShadowJar {
}
但是它仅生成1,这是使用feature
功能的好方法吗?
答案 0 :(得分:1)
默认任务shadowJar
使用runtime
配置,请参见docs-
为了隐藏配置v1
和v2
,我们可以定义两个ShadowJar
类型的新任务(需要配置)。
实际上,v1
和v2
可以定义为“常规”配置,也就是说,避免使用特征变量(这比较简单;此外,在尝试使用shadowJar和{{上面的1}},我们有一个错误(v1Implementation
)。
请参见下面的编辑示例;可以使用Resolving configuration 'v1Implementation' directly is not allowed
来构建。
gradle shadowJar1 shadowJar2