我需要从我的pom类型的Java库中产生传递依赖。这是一个关于我如何做的例子:
plugins {
`java-library`
`maven-publish`
}
repositories {
// some maven repo
}
dependencies {
// This is POM type dependency:
api("org.apache.sshd:apache-sshd:1.6.0") {
exclude(group = "org.slf4j")
}
}
publications {
create<MavenPublication>("maven") {
from(components["java"])
}
}
这种配置的问题是,在pom.xml
我的库的发布中,依赖项的类型jar
(默认情况下)是这样声明的:
<dependency>
<groupId>org.apache.sshd</groupId>
<artifactId>apache-sshd</artifactId>
<version>1.6.0</version>
<!-- Should declare pom type -->
<scope>compile</scope>
<exclusions>
<exclusion>
<artifactId>*</artifactId>
<groupId>org.slf4j<groupId>
</exclusion>
</exclusions>
</dependency>
因此,当我尝试使用另一个项目中的已发布库时,它会失败,因为没有诸如apache-sshd
类型应为的工件pom
。那么如何使用Gradle正确发布所需的依赖关系呢?
在带有Kotlin DSL的Gradle 5.3.1上运行。
尝试使用以下构造在Gradle中声明依赖关系
api("org.apache.sshd:apache-sshd:1.6.0@pom") {
exclude(group = "org.slf4j")
isTransitive = true
}
看起来Gradle默认使用所有依赖项作为jar类型。Maven插件使用此提取的类型在pom文件中生成依赖项部分。对于pom依赖性,必须将正确的值放入生成的文件的type字段中。但是,如果您为依赖项添加pom扩展名,则Gradle将无法解析此工件中声明的可传递依赖项。设置传递标记的值可解决此问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句