使用 maven-rpm-plugin 如何替换类似于程序集插件的文件中的文本

2023-11-29

我有一个 Maven 项目,我在其中创建了两个包装。一种是 tar.gz 文件(针对某些目标),以及针对可以使用 RPM 的 Linux 目标的 RPM。我使用 maven- assembly-plugin 作为 tar.gz 文件。我使用 maven-rpm-plugin 进行 RPM 打包。

程序集插件允许指定一个真正的选项,该选项将替换目标文件中的任何 Maven 属性。例如(来自我的 pom):

<fileSet>
    <directory>${basedir}/src/resources/</directory>
    <outputDirectory>/</outputDirectory>
    <filtered>true</filtered>
    <includes>
        <include>**/*.sh</include>
    </includes>
    <fileMode>0774</fileMode>
</fileSet>

我的 .sh 文件中有一个部分声明了 java 命令行的 jar 文件:

java -cp $ARGO_HOME/client/lib/${project.artifactId}-${project.version}.jar

当我使用上面定义的 Maven 程序集插件时,${project.artifactId}-${project.version} 会相应地进行翻译。

但是,当我在 RPM 构建中使用相同的文件时,这些变量不会被替换。

有没有办法让 RPM 配置像 Assembly 配置一样工作?我找不到任何文档告诉我这是可能的。顺便说一句,我的 RPM 配置如下所示:

         <mapping>
          <directory>/opt/argo/client/bin</directory>
          <directoryIncluded>false</directoryIncluded>
          <username>argo</username>
          <groupname>argogroup</groupname>
          <filemode>744</filemode>
          <sources>
            <source>
              <location>src/resources/client/bin</location>
              <includes>
                <include>*.sh</include>
              </includes>
            </source>
          </sources>
        </mapping>

我想要的就是在映射中添加 true,然后就到此为止了。有没有办法使用 maven-rpm-plugin 来做到这一点?

我正在考虑使用 maven-replacer-plugin,但这并不像我想要的那么优雅。

有什么建议么?


使用 postinstallScriptlet 配置遇到了同样的问题,通过遵循使用 maven-resources-plugin 的方向解决了这个问题,可以在此处看到:rpm-maven-plugin 中的外部脚本是否可以访问 Maven 属性

所以你的配置应该是:

对于 maven-resources-plugin:

<configuration>
    <outputDirectory>${basedir}/target/classes/scripts</outputDirectory>
    <resources>          
        <resource>
          <directory>src/resources/client/bin</directory>
          <filtering>true</filtering>
        </resource>
    </resources>              
</configuration>

对于 rpm-maven-插件:

    <mapping>
      <directory>/opt/argo/client/bin</directory>
      <directoryIncluded>false</directoryIncluded>
      <username>argo</username>
      <groupname>argogroup</groupname>
      <filemode>744</filemode>
      <sources>
        <source>
          <location>${basedir}/target/classes/scripts</location>
          <includes>
            <include>*.sh</include>
          </includes>
        </source>
      </sources>
    </mapping>

这样,maven-resources-plugin 就会将您的 maven 属性过滤到复制的文件中,该文件将在 rpm-maven-plugin 上引用

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 maven-rpm-plugin 如何替换类似于程序集插件的文件中的文本 的相关文章

随机推荐

  • 在 UIPasteboard 中存储 NSArray

    我有几个文本文件想要在 2 个应用程序之间传输 即同一应用程序的免费和付费版本 我正在使用 UIPasteboard 来执行此操作 文件的内容作为 NSArray 保存在内存中 因此我想将这些 NSArray 复制到粘贴板 精简版 并从粘贴
  • 使用 itextsharp 删除基于文本的水印

    根据这篇文章 从 PDF iTextSharp 中删除水印 mkl 代码适用于 ExGstate 图形水印 但我已经测试了此代码以从某些 PDF 内容后面具有基于文本的水印的文件中删除水印 例如此文件 http s000 tinyuploa
  • ReactJS 修改对象数组的特定属性

    我得到了在状态中分配的对象数组 我想用输入字段修改属性 我尝试了以下一些
  • 如何使用 Javascript 获取元素的名称?

    我正在尝试获取 Javascript 中元素的名称 含义如果该元素是 div div then div 会被退回 如果它是 img src then img 会被退回 我使用 jquery 选择一堆元素 然后对所有元素调用自定义函数 在该函
  • Pandas 0.20.2 to_sql() 使用 MySQL

    我正在尝试将数据帧写入 MySQL 表 但得到了 111 Connection refused error 我在这里遵循了已接受的答案 使用 SQLAlchemy to sql 使用 pandas 写入 MySQL 数据库 答案的代码 im
  • python Spyder 不导入 numpy

    我正在使用 python Spyder 2 2 5 和 Windows 7 python 2 7 编写脚本 一开始我尝试了所有的导入方式 from numpy import or import numpy and also import n
  • 以类名作为返回类型的方法

    我是 C 或任何类型的编程语言的新手 当我看到c 中的代码时 我发现这里有很多混乱 我想从这里澄清其中之一 方法的常见结构是
  • 从 VBA 运行 python 脚本

    设想 我正在尝试从 Excel 中的 vba 代码运行 python 脚本 代码运行没有错误 但没有产生任何结果 VBA 中的代码 Private Sub CommandButton1 Click Dim Ret Val Dim args
  • 尝试将数据附加到子值时应用程序崩溃

    我正在按照 firebase 中所示的说明进行操作 但即使在确保文本条目的类型为字符串之后 我仍然遇到崩溃 这是错误 由于未捕获的异常 InvalidPathValidation 而终止应用程序 原因 child 必须是非空字符串且不包含
  • Java 并发递增值

    我一直在读关于volatile and synchronized但我一直在困惑中摸不着头脑 我希望有人能帮助我解决问题 private HashMap
  • ALTER TABLE 脚本中的 MySQL 变量

    您好以下过程必须将所有约束从一个表移至另一个表 但是我在应删除约束时遇到了一些困难 问题 如何在下面的行中使用变量 ALTER TABLE var referenced table name DROP FOREIGN KEY var con
  • R:将日期从每日转换为每周并绘制它们

    我正在尝试学习如何处理时间序列数据 我创建了一些虚假的每日数据 尝试按周聚合它 然后绘制它 set seed 123 library xts library ggplot2 date decision made seq as Date 20
  • setf 在函数中不起作用

    我在脚本中定义了一个特殊变量 unsorted list 和一个用于重置此变量的函数 defparameter unsorted lst nil defun reset to unsorted list setf unsorted lst
  • 将 .tar.gz 文件的内容从网站读取到 python 3.x 对象中

    我是Python新手 当尝试将 tar gz 文件的内容读入 python 时 我无法弄清楚我做错了什么 我想要阅读的 tar 文件托管在以下网址 ftp ftp ncbi nlm nih gov pub pmc b0 ac Breast
  • 目录的平均和最大大小

    我有一个目录和一堆子目录 如下所示 目录1 sub dir1 sub dir2 sub dir3 sub dir4 sub dir5 等等 数百个 如何查明子目录的平均大小是多少 如何找到子目录的最大大小是多少 全部使用 Unix 命令 T
  • 让输入按钮像 一样运行,无需使用 JavaScript

    我知道我可以分配一个onclick采取行动
  • 获取文件夹中最近更新的文件的 filemtime

    我有一个包含 4 个文件的文件夹 我想提取最近一个文件的最后修改时间 可能并不总是相同 有没有好的方法可以做到这一点 Use a 目录迭代器找到文件 然后简单地比较它们的修改时间 这应该这样做 iterator new DirectoryI
  • 在 apache 中运行 Node.js?

    我们在一台机器上安装了 Apache Web 服务器 该机器还使用 Perl 提供页面服务 对于一个项目 我决定使用 Node js 而不是 Perl Ruby 只是想知道是否可以使用 Apache 作为我的网络服务器 因此它为页面提供服务
  • 在 Qt 中使用 aar 库

    是否可以在 Qt 应用程序中使用 Android Studio 库 aar 文件 问题是 我想用 Qt 实现一个移动应用程序 但只有一个 Android Studio 库 是否可以将该库包含在 Qt 项目中或者让我为其编写一个包装类 如果我
  • 使用 maven-rpm-plugin 如何替换类似于程序集插件的文件中的文本

    我有一个 Maven 项目 我在其中创建了两个包装 一种是 tar gz 文件 针对某些目标 以及针对可以使用 RPM 的 Linux 目标的 RPM 我使用 maven assembly plugin 作为 tar gz 文件 我使用 m