将属性文件与 Maven 程序集合并
Posted
技术标签:
【中文标题】将属性文件与 Maven 程序集合并【英文标题】:Merge properties files with Maven assembly 【发布时间】:2011-08-01 16:23:29 【问题描述】:maven 程序集插件有问题。
我有一个使用多个 jar 的 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/ 插件运行 ant concat task http://ant.apache.org/manual/Tasks/concat.html 来合并文件。我会在 prepare-package 阶段运行 maven-antrun。
【讨论】:
谢谢,这个插件很好用。我只想使用 maven 程序集,但这似乎是不可能的。【参考方案3】:根据 Skarab 的回答,这是我使用 maven-antrun-plugin 解决此问题的代码:
<project>
...
<build>
...
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<phase>prepare-package</phase>
<configuration>
<target>
<concat destfile="$project.build.directory/setup_db.sql">
<fileset file="$project.basedir/src/main/resources/db/sql_one/*.sql" />
<fileset file="$project.basedir/src/main/resources/db/sql_another/*.sql" />
</concat>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
</build>
【讨论】:
【参考方案4】:您可以尝试重命名第一个文件,然后合并这两个文件。
这是 *** 上的一个线程,其中记录了此类文件的重命名: Renaming resources in Maven
【讨论】:
好的,我可以重命名文件,但是之后如何合并呢?如果可能的话,使用汇编插件。以上是关于将属性文件与 Maven 程序集合并的主要内容,如果未能解决你的问题,请参考以下文章