Java 将属性文件与Maven程序集合并
我对maven汇编插件有问题 我有一个maven项目,它使用了几个JAR。每个jar都包含配置文件。 在另一个项目中,我使用maven assembly插件将所有配置组装到唯一的jar中 所有工作正常,但不幸的是,两个文件的名称相同,第二个文件覆盖了第一个文件 我无法告诉maven合并这两个文件而不是覆盖 有人知道怎么做Java 将属性文件与Maven程序集合并,java,maven,maven-plugin,maven-assembly-plugin,Java,Maven,Maven Plugin,Maven Assembly Plugin,我对maven汇编插件有问题 我有一个maven项目,它使用了几个JAR。每个jar都包含配置文件。 在另一个项目中,我使用maven assembly插件将所有配置组装到唯一的jar中 所有工作正常,但不幸的是,两个文件的名称相同,第二个文件覆盖了第一个文件 我无法告诉maven合并这两个文件而不是覆盖 有人知道怎么做 谢谢。您可以尝试重命名第一个文件,然后合并两个文件 下面是stackoverflow上的一个线程,其中记录了此类文件的重命名: 这并不完全是您想要的,但我会使用插件运行ant
谢谢。您可以尝试重命名第一个文件,然后合并两个文件 下面是stackoverflow上的一个线程,其中记录了此类文件的重命名:
这并不完全是您想要的,但我会使用插件运行ant concat任务来合并文件。我会分阶段运行maven-antrun。与附加变压器的组合应满足您的要求 我们使用它将来自两个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>
org.apache.maven.plugins
maven阴影插件
1.4
包裹
阴凉处
groupname:artifactname
**/*
propertyfiletomerge.properties
根据Skarab的回答,以下是我用来解决此问题的代码,使用:
...
...
...
org.apache.maven.plugins
maven antrun插件
1.8
准备包装
跑
...
好的,我可以重新命名文件,但之后如何合并?如果可能的话,使用汇编插件。谢谢,它可以很好地使用这个插件。我只想使用maven组装,但似乎不可能。
<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>