我有一个多模块 Maven 项目。我从父 pom 调用 RPM 插件,但与 maven 程序集插件不同,我需要提供我希望打包到 RPM 指定目录的源的完整路径。
例如,除非我指定完整路径,否则以下位置路径将不起作用:
<sources>
<source>
<location>/src/main/config</location>
</source>
</sources>
正则表达式和通配符也不起作用。
请问有什么建议吗?
谢谢
源参数的文档说:
如果路径不以/ 开头,则将其视为相对于项目的基本目录。
/
因此,如果您从 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 的配置如下所示:
<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