使用 maven-rpm-plugin 我如何替换类似于程序集插件的文件中的文本
Using maven-rpm-plugin how do I to replace text in files similar to the assembly plugin
我有一个 Maven 项目,我在其中创建了两个包装。一个是 tar.gz 文件(对于某些目标)和 linux 可以使用 RPM 的目标的 RPM。我将 maven-assembly-plugin 用于 tar.gz 文件。我使用 maven-rpm-plugin 进行 RPM 打包。
程序集插件允许指定一个 true 选项,该选项将替换目标文件中的任何 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 配置像程序集配置一样工作?我找不到任何文档告诉我这是可能的。顺便说一句,我的 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,但它并不像我想要的那样优雅。
有什么建议吗?
▪ filtering: is true
or false
, denoting if filtering is to be enabled for this resource. ... resources can also use properties that are by default defined in the POM (such as ${project.version})
在使用 postinstallScriptlet 配置时遇到了同样的问题,通过遵循使用 maven-resources-plugin 的方向解决了这个问题,可以在这里看到:does an external script in rpm-maven-plugin have access to maven properties
所以你的配置应该是:
对于 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-plugin:
<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
我有一个 Maven 项目,我在其中创建了两个包装。一个是 tar.gz 文件(对于某些目标)和 linux 可以使用 RPM 的目标的 RPM。我将 maven-assembly-plugin 用于 tar.gz 文件。我使用 maven-rpm-plugin 进行 RPM 打包。
程序集插件允许指定一个 true 选项,该选项将替换目标文件中的任何 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 配置像程序集配置一样工作?我找不到任何文档告诉我这是可能的。顺便说一句,我的 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,但它并不像我想要的那样优雅。
有什么建议吗?
▪ filtering: is
true
orfalse
, denoting if filtering is to be enabled for this resource. ... resources can also use properties that are by default defined in the POM (such as ${project.version})
在使用 postinstallScriptlet 配置时遇到了同样的问题,通过遵循使用 maven-resources-plugin 的方向解决了这个问题,可以在这里看到:does an external script in rpm-maven-plugin have access to maven properties
所以你的配置应该是:
对于 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-plugin:
<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