我正在更新一些最初使用spec文件完成的RPM以使用Maven RPM插件。原始设置相当复杂,但包括一个“共同”项目,由其他四个项目使用。 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=$1
INSTALL_DIR=$2
我怎样才能让这两件事一起工作?
答案 0 :(得分:1)
经过进一步的狩猎和实验,我已经能够解决这个问题了。有两个问题描述了如何在更高层次上做到这一点。在链接下方,我将展示我的所作所为,希望能够成为一个有用的例子。
does-an-external-script-in-rpm-maven-plugin-have-access-to-maven-properties
和 using-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目录中,并且所有变量都被替换。这正是我所需要的,所以我希望这有助于其他人。