0

Maven RPM プラグインを使用するために、もともと仕様ファイルで作成されたいくつかの RPM を更新しています。元のセットアップはかなり複雑ですが、他の 4 つのプロジェクトで使用される「共通」プロジェクトが含まれています。仕様ファイルはその共通プロジェクトにあり、パラメーターを使用して特定のものを指定するシェル スクリプトもありました (たとえば、フォルダー名を作成するときにプロジェクト A とプロジェクト B を区別するため)。シェル スクリプトに渡されたパラメーターを処理するプロファイルを作成したいと考えています。これらのスクリプトは、必要がなければ手直ししたくない多くのことを処理します。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

この 2 つを連携させるにはどうすればよいでしょうか。

4

1 に答える 1

1

さらなる調査と実験の後、私はこれを解決することができました. より高いレベルでこれを行う方法を説明する 2 つの質問があります。リンクの下に、これが有用な例になることを期待して、私が行ったことを示します。

dos-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 ディレクトリにコピーされ、すべての変数が置換されます。これはまさに私が必要としていたものなので、これが他の誰かに役立つことを願っています.

于 2016-11-02T13:26:29.233 に答える