maven将另一个模块的组件包含到rpm中

maven将另一个模块的组件包含到rpm中,maven,Maven,我有一个多模块maven项目,以及许多构建标准jar文件的代码模块,我有一个模块使用maven assembly插件将测试线束构建为zip文件,另一个模块使用rpm maven插件构建应用程序rpm。我想在rpm中包含测试线束zip文件 目前,我正在rpm模块中执行以下操作: <dependencies> <dependency> <groupId>${project.groupId}</groupId> &

我有一个多模块maven项目,以及许多构建标准jar文件的代码模块,我有一个模块使用maven assembly插件将测试线束构建为zip文件,另一个模块使用rpm maven插件构建应用程序rpm。我想在rpm中包含测试线束zip文件

目前,我正在rpm模块中执行以下操作:

<dependencies>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>appn</artifactId>
        <version>${project.version}</version>
    </dependency>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>test-harness</artifactId>
        <version>${project.version}</version>
    </dependency>
</dependencies>

<build>
    <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>rpm-maven-plugin</artifactId>
    <configuration>
    :
    <mapping>
        <directory>/opt/app/installed/${rpmSoftwareName}-${project.version}/utils</directory>
        <username>${rpmUsername}</username>
        <groupname>${rpmGroupname}</groupname>
        <filemode>0755</filemode>
        <sources>
            <source>
                <location>${project.build.directory}/../../test-harness/target/test-harness-${project.version}-dist.zip</location>
            </source>
        </sources>
    </mapping>
    <mapping>
        <directory>/opt/app/installed/${rpmSoftwareName}-${project.version}/lib</directory>
        <username>${rpmUsername}</username>
        <groupname>${rpmGroupname}</groupname>
        <filemode>0755</filemode>
        <dependency />
    </mapping>

${project.groupId}
appn
${project.version}
${project.groupId}
测试线束
${project.version}
org.codehaus.mojo
rpm maven插件
:
/opt/app/installed/${rpmSoftwareName}-${project.version}/utils
${rpmUsername}
${rpmGroupname}
0755
${project.build.directory}/./../test-harness/target/test-harness-${project.version}-dist.zip
/opt/app/installed/${rpmSoftwareName}-${project.version}/lib
${rpmUsername}
${rpmGroupname}
0755

我遇到的问题是rpm的lib目录中包含了测试工具及其可传递依赖项。如果我从lib映射中排除测试线束,我不会得到测试线束,但会得到它的可传递依赖项。如果我将测试线束作为依赖项删除,那么我必须依赖父pom中的模块顺序,以确保首先构建测试线束,这似乎有点弱,因为依赖相对路径将测试线束包括在映射中。。。一定有更好的方法。

最好的方法是首先不要使用访问其他模块的相对路径(../target/etc)。最好在rpm模块中使用依赖项。例如,使用适当的分类器将zip文件定义为依赖项

<dependencies>
  <dependency>
     <groupId>project.com.domain</groupId>
     <artifactId>test-harness</artifactId>
     <version>${project.version}</version>
     <classifier>dist</classifier>
     <type>zip</type>
  </dependency>
</dependencies>

project.com.domain
测试线束
${project.version}
距离
拉链
之后,您只需将依赖项添加到rpm配置中,如下所示:

<mapping>
  <directory>/usr/local/lib</directory>
  <filemode>750</filemode>
  <username>dumper</username>
  <groupname>dumpgroup</groupname>
  <dependency>
    <includes>
      <include>...:test-harness:dist:zip:${project.version}</include>
      <include>...</include>
    </includes>
    <excludes>
      <exclude>...</exclude>
    </excludes>
  </dependency>
</mapping>

/usr/local/lib
750
翻车机
转储组
…:测试线束:dist:zip:${project.version}
...
...

我不能100%确定include(artifactId:classifier:type:version?)的确切顺序。

将测试线束添加为依赖项(即使使用了分类器和类型)仍然会导致它及其可传递依赖项包含在rpm lib目录中。在lib目录映射中排除测试线束只会排除测试线束,但仍然保留其可传递的依赖项-但我认为这是正确的方向在依赖项区域添加排除项。这应该能奏效。