将属性文件与 Maven 程序集合并

我有一个maven汇编插件的问题。

我有一个使用几个罐子的maven项目。每个 jar 都包含配置文件。在另一个项目中,我使用maven组装插件将所有配置组装在独特的jar中。

一切正常,但不幸的是,两个文件是相同的名称,第二个文件覆盖了第一个。

我没有达到告诉maven合并两个文件而不是覆盖。

有人知道如何做到这一点吗?

谢谢。


答案 1

maven-shade-plugin 与 AppendingTransformer 相结合,应该可以做你想做的事。

我们使用它将两个 zip 项目(定义为单独的 maven 模块)的属性文件合并到一个 zip 文件中。这将从两个模块创建文件和目录的超集,并将指定的属性文件合并在一起。我们还将要合并的模块定义为执行合并的 maven 模块的依赖项。

像这样的东西应该可以解决问题:

<plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-shade-plugin</artifactId>
      <version>1.4</version>
      <executions>
        <execution>
          <phase>package</phase>
          <goals>
        <goal>shade</goal>
          </goals>
          <configuration>
        <filters>
          <filter>
            <artifact>groupname:artifactname</artifact>
            <includes>
              <include>**/*</include>
            </includes>
          </filter>
        </filters>
        <transformers>
          <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
            <resource>propertyfiletomerge.properties</resource>
          </transformer>
        </transformers>
          </configuration>
        </execution>
      </executions>
    </plugin>

答案 2

它不完全是您要寻找的,但是我会使用 http://maven.apache.org/plugins/maven-antrun-plugin/ 插件来运行蚂蚁concat任务 http://ant.apache.org/manual/Tasks/concat.html 合并文件。我会在准备包阶段运行 maven-antrun。


推荐