我可以使用 Maven 配置文件中的变量作为带有 RPM 插件的 postinstallScriptlet 的参数吗?

Can I use a variable in a Maven profile as a parameter for a postinstallScriptlet with the RPM plugin?

我正在更新一些最初使用规范文件完成的 RPM 以使用 Maven RPM 插件。原始设置相当复杂,但包括一个 "common" 项目,该项目被其他四个项目使用。 spec 文件在那个公共项目中,还有 shell 使用参数指定某些东西的脚本(比方说,在制作文件夹名称时区分项目 A 和项目 B)。我想制作配置文件来处理传递给 shell 脚本的参数。这些脚本处理了很多我不想返工的事情,如果我不需要的话。有没有办法使用我在配置文件中设置的值作为 shell 脚本参数,前提是我使用 shell 脚本(最少修改)作为 postInstallScriptlet。

这一切都在 Linux (Centos 6)。

所以,配置文件看起来像这样:

<profile>
   <id>beta</id>
   <properties>
      <ENVIRONMENT>Beta</ENVIRONMENT>
      <INSTALL_DIR>/var/ProjA</INSTALL_DIR>
   </properties>
</profile>

脚本文件应该是这样的:

ENVIRONMENT=
INSTALL_DIR=

我怎样才能让这两个东西一起工作?

经过进一步的搜索和实验,我已经能够解决这个问题。有两个问题描述了如何在更高层次上做到这一点。在链接下方,我将展示我所做的,希望能成为一个有用的示例。

does-an-external-script-in-rpm-maven-plugin-have-access-to-maven-properties

插件部分是:

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-resources-plugin</artifactId>
   <version>3.0.1</version>
   <executions>
      <execution>
         <id>copy-resources</id>
         <phase>validate</phase>
         <goals>
            <goal>copy-resources</goal>
         </goals>
         <configuration>
            <outputDirectory>${basedir}/bin</outputDirectory>
            <resources>
               <resource>
                  <!-- note that this will process all files in this directory -->                  
                  <directory>trunk/rpm_scripts/resources</directory>
                  <filtering>true</filtering>
               </resources>
         </configuration>
      </execution>
   </executions>
</plugin>

然后,在个人资料中:

<profile>
   <id>beta</id>
   <properties>
      <VERSION>5.0.0</VERSION>
      <MODULE>Project A</MODULE>
      <!-- and more -->
   </properties>
</profile>

并且在 postinstallScriptlet 文件中:

VERSION=${VERSION}
MODULE=${MODULE}

这导致文件被复制到 ${basedir}/bin 目录中,并进行了所有变量替换。这正是我所需要的,所以我希望这对其他人有所帮助。