【问题标题】:How generate a Fat Maven Plugin with maven-plugin-plugin?如何使用 maven-plugin-plugin 生成 Fat Maven 插件?
【发布时间】:2017-02-23 14:51:42
【问题描述】:

在我们公司,我们使用 maven-plugin-plugin v3.5 创建了一个 Maven 插件,通常包含 20kb。

问题开始于两天前,因为 repo.jenkins-ci.org 代理无法正常工作。因此,我们的客户构建受到影响,因为无法下载我们插件的依赖项,导致构建失败:

Failed to collect dependencies at our-project:jar:1.6.2 -> our-project:jar:1.6.2 -> com.devfactory.utqg:utqg-github:jar:1.6.2 -> org.kohsuke:github-api:jar:1.77 -> com.infradna.tool:bridge-method-annotation:jar:1.14 -> org.jenkins-ci:annotation-indexer:jar:1.4: Failed to read artifact descriptor for org.jenkins-ci:annotation-indexer:jar:1.4: Could not transfer artifact org.jenkins-ci:jenkins:pom:1.26 from/to repo.jenkins-ci.org (http://repo.jenkins-ci.org/public/): Failed to transfer file: http://repo.jenkins-ci.org/public/org/jenkins-ci/jenkins/1.26/jenkins-1.26.pom. Return code is: 502 , ReasonPhrase:Bad Gateway. -> [Help 1]

因此,我们解决该问题的方法主要集中在创建 Fat Maven 插件(不是 Fat Jar!)。但是,使用 Maven Shade 插件不适合复制工件,因为 jar 签名导致插件执行失败。

有人生成了fat Maven 插件吗?如果是,怎么做?

【问题讨论】:

  • 你需要创建一个jar jar 文件吗?正确的。如果是这样,请使用 maven-assembly-plugin 或 maven-shade-plugin。此外,使用 repo.jenkins-ci.org 是下载 maven 插件的错误位置。 Maven 插件位于 Maven Central 中,默认情况下在 Maven 中配置。最好是开始使用存储库管理器......
  • no @khmarbaise,我需要创建一个 FAT maven 插件,根据定义,它是一个 Jar 文件。我为此使用了 maven-plugin-plugin。
  • 这个插件的目的是什么?所以你重写了 maven-shade-plugin/maven-assembly-plugin。
  • @khmarbaise 它是一个公司插件,可以进行一些代码分析。我不想拥有一个 20kb 的 maven 插件,而是想要一个完整的 jar,其中包含所有依赖项。

标签: java maven maven-3 maven-plugin


【解决方案1】:

两天前开始的问题,因为repo.jenkins-ci.org代理不是 好好工作。因此,我们的客户端构建受到影响,因为无法下载我们插件的依赖项,

我建议运行您自己的 Maven 存储库管理器以避免此类问题:https://maven.apache.org/repository-management.html

在您的 settings.xml(镜像)中配置单个组:http://books.sonatype.com/nexus-book/2.8/reference/maven-sect-single-group.html

不要在您的 POM 中管理存储库,而只能作为 Maven 存储库管理器中的代理。

【讨论】:

  • 我们目前有一个内部 Nexus,但我们不能保证我们的存储库在所有请求上都能 100% 运行。此外,导致此问题的这种依赖不是我们的,而是对树的第四级内部依赖。 (我们的 jar -> 第一个 3party jar -> 第二个 3party jar -> jar 给出问题)所以,我们想要一个 15mb 的 maven 插件,而不是一个 20kb 的 maven 插件(这是我们目前的大小),里面包含所有文件其中。有什么想法吗?
  • 这不是推荐的方式,我认为如果您的 repo 不可用,您仍然会遇到类似的问题。我认为你真的应该得到一个稳定的 Maven 存储库管理器。你用什么产品?你有什么问题?也许对后续问题有好处。
  • 您可以为第三方库定义任意数量的代理存储库。这应该没有问题。
猜你喜欢
  • 2016-02-19
  • 2015-05-03
  • 2023-03-04
  • 1970-01-01
  • 2012-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多