【问题标题】:rpm-maven-plugin: deploying jar and rpm into different repositoriesrpm-maven-plugin:将 jar 和 rpm 部署到不同的存储库中
【发布时间】:2018-08-18 13:09:20
【问题描述】:

我有一个 pom 构建一个 jar 并使用 rpm-maven-plugin 将其打包到一个 rpm 中。该 jar 既可用作独立应用程序,也可用作其他应用程序的依赖项,因此我需要将这两个工件都部署到本地 Nexus。我想将 jar 部署到标准的 maven-releases/maven-snapshots 存储库中,但我想将 rpm 部署到同一个 Nexus 中的不同存储库中,专门用于我们的 RPM。

我的专家知识相当基础,但我不知道如何做到这一点。我希望它不会超出 maven 哲学,因为单独的 RPM 存储库可能是不可协商的。

谢谢!

【问题讨论】:

  • 首先,如果您有一个独立应用程序的 jar 并且被用作依赖项,那么我敢打赌您的 jar 包含未使用的东西,因为它被用作依赖项,这意味着您应该解耦依赖项和独立 jar(通常是单独的模块).. 现在来回答您的问题:关键是您在 maven 构建期间使用 rpm-maven-plugin 构建 rpm,这意味着正在生成的所有工件都将部署到同一个远程仓库...意思是同一个仓库。
  • 问题也是为什么你有一个单独的 RPM 存储库?这个存储库是 yum 存储库还是类似的存储库?还是 Maven 存储库?
  • 同意对单独的 jar 进行更广泛的重构是正确的,但我需要在不破坏一切的情况下进行迁移。单独的存储库是 Nexus 中托管的 yum 格式存储库。
  • 你在使用像 Jenkins 这样的 CI 解决方案吗?
  • 是的,开始把所有东西都转入 Jenkins

标签: maven rpm-maven-plugin


【解决方案1】:

我也有同样的情况。我的解决方案是创建一个子目录/子模块,专门用于使用 rpm 插件生成 rpm(我将模块命名为 create-rpms)。在那个子模块中,我创建了一个 Maven 配置文件(也称为 create-rpms),其中包含指向 rpm/yum 存储库的不同分布管理元素。为了构建我的项目,我有 2 个 maven 调用:

"mvn deploy" 生成/上传 jar/war 等工件, "mvn deploy -P create-rpms -f create-rpms/pom.xml" 创建/上传 rpms。

这种方法还有一个好处是允许基于 Windows 的开发人员使用常规 maven 在本地编译,然后在基于 Linux 的 Jenkins 服务器上使用第二个 maven 调用。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    相关资源
    最近更新 更多