【问题标题】:Micronaut - shadow fat-jar plugin not working with corporate repoMicronaut - shadow fat-jar 插件不适用于公司回购
【发布时间】:2020-03-02 09:26:01
【问题描述】:

我正在为一个项目使用Micronaut 框架,Micronaut CLI 使用com.github.johnrengelman.shadow gradle 插件生成项目,当我使用运行 jar 时该插件可以正常工作-

$ 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 插件不能与公司存储库一起使用?

【问题讨论】:

  • ./gradlew assemble 创造你想要的东西吗?

标签: java gradle netty gradle-plugin micronaut


【解决方案1】:

已解决

问题是 plugin{...} 块不访问私人/公司回购。

通过将插件定义从 plugins{...} 恢复为旧的定义方式 apply plugin... 解决了这个问题

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

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

已删除(不访问私人/公司回购)-

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

如需了解更多信息,请查看SO question 中的第一条评论。

【讨论】:

    【解决方案2】:

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

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

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

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

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

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

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

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

    【讨论】:

    • 我不确定这就是我想要的方式。有一个示例项目,它似乎正在使用影子插件和公司回购。让我探索一下
    • 我想了解的是嵌入式服务器 bean 如何被注入影子插件而不是其他方式?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-16
    • 1970-01-01
    • 2014-08-30
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多