0

我使用以下插件:

id 'maven-publish'
id "com.github.johnrengelman.shadow" version "7.0.0"

我的依赖:

dependencies {
    shadow gradleApi()
    shadow localGroovy()
    implementation 'com.example:lib:0.1.0'

我的发布块:

publishing {
    publications {
        pluginJar(MavenPublication) {  publication ->
            from project.shadow.component(publication)
            artifact sourceJar
        }
    }
}

当我运行publishToMavenLocal任务时,我可以看到结果pom.xml包含我不想要的依赖项。

假设它是:

<dependency>
  <groupId>com.example</groupId>
  <artifactId>lib</artifactId>
  <version>0.1.0</version>
  <scope>runtime</scope>
</dependency>

我如何配置publications块以摆脱pom.xml(和模块)文件中的这种依赖关系?

4

2 回答 2

1

从(范围)和(范围)配置中pom.xml填充依赖项。您可以删除要从此配置中排除的依赖项。apiElementscompileruntimeElementsruntimepom.xml

示例(我将使用 Kotlin DSL,因为我不熟悉 Groovy):

setOf("apiElements", "runtimeElements")
    .flatMap { configName -> configurations[configName].hierarchy }
    .forEach { configuration ->
        configuration.dependencies.removeIf { dependency ->
            dependency.name == "lib"
        }
    }
from(components["java"])

将此代码转换为 Groovy 并将其粘贴到您的publication闭包中。

于 2021-07-22T16:51:14.467 回答
0

我发现由于我的库有一个runtime依赖项,我可以使用以下内容:

components.java.withVariantsFromConfiguration(configurations.runtimeElements) {
    skip()
}
于 2021-07-26T09:58:19.427 回答