maven rpm插件需要到多模块项目中源位置的完整路径

maven rpm插件需要到多模块项目中源位置的完整路径,maven,plugins,rpm,Maven,Plugins,Rpm,我有一个多模块maven项目。我从父pom调用RPM插件,但与maven assembly插件不同,我需要提供希望打包到RPM指定目录中的源代码的完整路径 例如,除非指定完整路径,否则以下位置路径将不起作用: <sources> <source> <location>/src/main/config</location> </source> </sources> /src/main/config 正则

我有一个多模块maven项目。我从父pom调用RPM插件,但与maven assembly插件不同,我需要提供希望打包到RPM指定目录中的源代码的完整路径

例如,除非指定完整路径,否则以下位置路径将不起作用:

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

/src/main/config
正则表达式和通配符也不起作用

有什么建议吗

谢谢

源参数的

如果路径不以/开头,则视为相对于 项目的基本目录

因此,如果从location参数中删除前导的
/
,它应该可以工作

--更新--

我用这个简单的多模块项目做了一个小测试:

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>
  <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>

是的,你是对的,但是路径存在于许多子模块中。它们都有配置文件放在src/main/config下,我需要访问它们,以便将它们打包到conf RPM位置。因为我是从父模块运行的,所以basedir路径确实指向子模块src/main/config目录。最简单的解决方案是使用${project.basedir}/src/main/config。当rpm插件只在父模块中运行时(您是否配置了
false
?)在您的配置中使用
可能是一个选项:
${project.basedir}**/src/main/config
如果您可以发布您如何准确配置plugin.hi-stefan,那就太好了。通配符似乎不适用于多模块项目的rpm插件。我用一个在我的机器上运行的解决方案更新了我的答案。正如@khmarbaise所提到的,
${project.basedir}
属性应该可以做到这一点。有两种选择:第一种是将basdir作为位置与
一起使用(可以使用通配符)。但是,RPM将反映文件的整个文件夹结构(例如
/usr/local/module1/src/main/config/…
)。第二个选项是为每个子模块定义
配置。RPM将直接在
文件夹中包含文件。
/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