java - 从Gradle “provided”在pom.xml中生成Maven “compileOnly”依赖项

标签 java maven gradle dependencies pom.xml

如果我理解正确,那么Gradle的compileOnly依赖项就对应于Gradle的旧provided,同时也对应于Maven POM的provided。它在Gradle世界中完美运行。
但是,compileOnlyprovided生成的pom.xml中不会生成任何maven-publish依赖项。
我们正在使用Gradle将Maven Artifact 发布到Maven Central。我们想在Gradle的provided中已发布的pom.xml中明确声明compileOnly

有谁知道有没有简单的方法可以做到这一点?或者,我们是否需要在以下代码中编写我们自己的Gradle脚本:

publishing {
  publications {
    maven(MavenPublication) {
      pom {
         /* Our own Gradle scripting to declare provided dependencies. */
      }
    }
  }
}

最佳答案

我知道我们可以通过如下所示编写脏脚本来对其进行调整,但是我们基本上不希望尽可能在build.gradle中“编写脚本”。

publishing {
  publications {
    maven(MavenPublication) {
      pom {
        withXml {
          project.configurations.compileOnly.allDependencies.each { dependency ->
              asNode().dependencies[0].appendNode("dependency").with {
                it.appendNode("groupId", dependency.group)
                it.appendNode("artifactId", dependency.name)
                it.appendNode("version", dependency.version)
                it.appendNode("scope", "provided")
              }
          }
        }
      }
    }
  }
}

关于java - 从Gradle “provided”在pom.xml中生成Maven “compileOnly”依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63372385/

相关文章:

java - 在 RecyclerView 的单个界面中使用多个 onClick 方法

java - 用于在 Amazon Beanstalk Linux 上下载 Java 8 的 Dockerfile

java - 如何正确创建 Gradle 任务?

gradle - 如何从最终工件(jar)中排除依赖项,但需要在 gradle 中编译和运行单元测试时使用

Java - 无法让它工作

java - 监控java请求

maven - Gradle:无效发布 'maven': Artifact 文件不存在

java - Vaadin8 迁移后 Vaadin Widgetset 编译错误

java - Maven 中的库引用不正确,.m2\repository 出现两次

android - 'buildSrc' 不能用作项目名称,因为它是保留名称