Micronaut - shadow fat-jar 插件不适用于公司回购

Micronaut - shadow fat-jar plugin not working with corporate repo

我正在为项目使用 Micronaut 框架,Micronaut CLI 使用 com.github.johnrengelman.shadow gradle 插件生成项目,当我 运行 罐子使用-

$ java -Dmicronaut.environments=E1 -jar build/appBundle/app.jar

build.gradle-

plugins {
  id "com.github.johnrengelman.shadow" version "5.0.0"
}

...

shadowJar {
    mergeServiceFiles()
}

问题是 com.github.johnrengelman.shadow 插件由于某种原因无法与 Jenkins 一起使用 我怀疑它在我们的公司仓库中不可用(并且无法添加)。虽然我能够使用 java 插件的 jar 任务创建一个可执行的 fat-jar,但它失败并出现以下错误-

$ java -Dmicronaut.environments=E1 -jar build/appBundle/app.jar
16:12:22.662 [main] INFO  i.m.context.env.DefaultEnvironment - Established active environments: [E1]
16:12:22.863 [main] INFO  io.micronaut.runtime.Micronaut - No embedded container found. Running as CLI application

build.gradle-

plugins {
  id "java"
}

...

jar {
  manifest {
    attributes "Main-Class": "axp.payments.pci.dss.PaymentsPciDssDispatcher"
  }

  from {
    configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
  }
}

主要问题是为什么 com.github.johnrengelman.shadow 插件不能与公司存储库一起使用?

有一种方法可以解决这种恼人的情况。

您可以从 GitHub 下载 shadow jar plugin 源代码并添加到 <project-root-folder>/buildSrc 目录中的 Micronaut 应用程序存储库。

您可以按照本指南了解如何创建自定义插件https://guides.gradle.org/writing-gradle-plugins

通过这种方法,影子插件在您的代码库中,您无需下载即可使用它。

最后一个想法。一家不允许您在公司存储库中代理像这个插件这样的开源软件的公司会阻碍您的工作。你可能想和你的经理谈谈。

我描述的解决方法很糟糕,因为

  • 你必须根据源代码升级插件
  • 它很可能很快就会过时
  • 这根本不是办法

祝你好运。希望这有帮助。

已解决

问题是插件{...} 块无法访问 private/corporate 存储库。

通过将插件定义从 plugins{...} 恢复为旧的定义方式 apply plugin...

解决了这个问题

添加了应用插件的旧方法(这是使其与私人仓库一起工作的唯一方法)-

apply plugin: "com.github.johnrengelman.shadow"

已删除(不访问 private/corporate 存储库)-

plugins {
  id "com.github.johnrengelman.shadow"
}

有关更多信息,请查看此 中的第一条评论。