当前位置: 首页 > 知识库问答 >
问题:

如何使用gradle maven-publish插件和Kotlin DSL发布一个pom为空的shadow jar?

郎建章
2023-03-14

影子插件留档有一个groovy的例子,但我不明白如何将其转换为静态编程语言。

来自https://imperceptiblethoughts.com/shadow/publishing的绝妙例子:

publishing {
  publications {
    shadow(MavenPublication) { publication ->
      project.shadow.component(publication)
    }
  }
}

我对Kotlin版本的最佳尝试:

publishing {
  publications {
    create<MavenPublication>("pluginMaven") {
      artifact(tasks["shadowJar"])
      project.shadow.component(this)
    }
  }
}

使用上述静态编程语言版本,阴影依赖项在生成的pom中显示为运行时依赖项,这违背了阴影的目的。

共有1个答案

邵亦
2023-03-14

解决办法是:

tasks {
    shadowJar {
       archiveClassifier.set("")
        minimize()
    }
}

这个github问题的一些背景。

 类似资料:
  • 我试图发布一个由Gradle 6.0创建的模糊JAR。1个ProGuard插件到Maven存储库。在过去的几天里,我学到了很多关于Gradle配置、变体和工件的知识,但我似乎无法做到这一点。我相信相关文件就是这里的文件。 我创建了一个简单的示例,展示了我在Github上的预期设置。 如果我运行在这个项目中,我得到了以下错误。 我还尝试了不推荐的插件。不幸的是,这个插件忽略了定制的ProGuard

  • 我正试着做一个包含所有项目的胖uber罐子。如果我做了“MVN包”,我得到一个uber jar下的“blah”项目标签文件夹。(blah项目有主类。)uber jar包含所有项目(作为文件夹而不是jar),但当我运行它时,它似乎无法识别feature1和feature2项目。 我在上面添加了feature1和feature2的依赖项,以便它们在uber jar文件中。这错了吗?附注。blahmes

  • 我已经构建了一个定制的gradle插件,我正试图将其发布到一个私有的maven repo。我使用插件来实现这一点。在经历了很多麻烦之后,我查看了google play services插件的实现(https://github.com/google/play-services-plugins/blob/master/google-services-plugin/publish.gradle)并试图复

  • 关于如何将胖JAR发布到JitPack并不是很直观,因为影子文档没有JitPack的部分,JitPack文档也没有关于胖JAR的部分。 所有文档都说,如果您包括,那么他们将执行任务。 通常通过创建shadowJar fat jar,但是JitPack上的build命令是不可配置的,因此我们必须修改以使用shadowJar。

  • 2)有没有一种方法可以不使用这个pom,而是配置teamcity构建步骤,直接从gradle构建发布?

  • 在我的buildconfig.groovy中,我有: 我试着用下面的命令来拉开序幕: publish-plugin--snapshot--repository=newsnapshot--stacktrace