0

マルチモジュールのmavenプロジェクトがあります。親 pom から RPM プラグインを呼び出していますが、maven アセンブリ プラグインとは異なり、RPM で指定されたディレクトリにパッケージ化するソースへのフル パスを提供する必要があります。

たとえば、フル パスを指定しない限り、次の場所のパスは機能しません。

<sources>
  <source>
    <location>/src/main/config</location>
  </source>
</sources> 

正規表現とワイルドカードも機能しません。

何か提案はありますか?

ありがとう

4

1 に答える 1

2

source パラメーターのドキュメントには次のように記載されています。

パスが / で始まらない場合は、プロジェクトのベース ディレクトリからの相対パスと見なされます。

/そのため、場所パラメーターから先頭を削除すると機能するはずです。

- アップデート -

この単純なマルチモジュール プロジェクトで少しテストを行いました。

rpm-test
|-- module1
|   |-- pom.xml
|   |-- src
|       |-- main
|       |   |-- config
|       |   |   |-- mod1-file1.conf
|       |   |   |-- mod1-file2.conf
|-- module2
|   |-- pom.xml
|   |-- src
|       |-- main
|       |   |-- config
|       |   |   |-- mod2-file1.conf
|       |   |   |-- mod2-file2.conf
|-- pom.xml

親 POMの rpm-maven-plugin の構成は次のようになります。

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>rpm-maven-plugin</artifactId>
  <version>2.1-alpha-1</version>
  <inherited>false</inherited>
  <configuration>
    <copyright>2012, Me</copyright>
    <group>mygroup</group>
    <mappings>
      <!-- Option 1: Use the base directory and includes -->
      <mapping>
        <directory>/usr/local</directory>
        <sources>
          <source>
            <location>${project.basedir}</location>
            <includes>
              <include>**/src/main/config/**</include>
            </includes>
          </source>
        </sources>
      </mapping>

      <!-- Option 2: List each module separatly -->
      <mapping>
        <directory>/tmp</directory>
        <sources>
          <source>
            <location>${project.basedir}/module1/src/main/config</location>
          </source>
          <source>
            <location>${project.basedir}/module2/src/main/config</location>
          </source>
        </sources>
      </mapping>
    </mappings>
  </configuration>
  <executions>
    <execution>
      <goals>
        <goal>rpm</goal>
      </goals>
    </execution>
  </executions>
</plugin>

生成された RPM の内容を で照会するとrpm -qpl、次の結果が得られます。

/tmp
/tmp/mod1-file1.conf
/tmp/mod1-file2.conf
/tmp/mod2-file1.conf
/tmp/mod2-file2.conf
/usr/local/module1/src/main/config/mod1-file1.conf
/usr/local/module1/src/main/config/mod1-file2.conf
/usr/local/module2/src/main/config/mod2-file1.conf
/usr/local/module2/src/main/config/mod2-file2.conf
于 2012-07-12T21:46:50.430 に答える