Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将属性文件与Maven程序集合并_Java_Maven_Maven Plugin_Maven Assembly Plugin - Fatal编程技术网

Java 将属性文件与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

我对maven汇编插件有问题

我有一个maven项目,它使用了几个JAR。每个jar都包含配置文件。 在另一个项目中,我使用maven assembly插件将所有配置组装到唯一的jar中

所有工作正常,但不幸的是,两个文件的名称相同,第二个文件覆盖了第一个文件

我无法告诉maven合并这两个文件而不是覆盖

有人知道怎么做


谢谢。

您可以尝试重命名第一个文件,然后合并两个文件

下面是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>