0

我正在更新一些最初使用规范文件完成的 RPM 以使用 Maven RPM 插件。最初的设置相当复杂,但包括一个由其他四个项目使用的“通用”项目。规范文件位于该公共项目中,以及使用参数指定某些内容的 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=$1
INSTALL_DIR=$2

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

4

1 回答 1

1

经过进一步的狩猎和实验,我已经能够解决这个问题。有两个问题描述了如何在更高级别上执行此操作。在链接下方,我将展示我所做的事情,希望能成为一个有用的例子。

是否在 rpm-maven-plugin-have-access-to-maven-properties 中的外部脚本

使用-maven-rpm-plugin-how-do-i-to-replace-text-in-files-similar-to-the-assembly

插件部分是:

<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 目录中,并进行了所有变量替换。这正是我所需要的,所以我希望这对其他人有所帮助。

于 2016-11-02T13:26:29.233 回答