大多数情况下,MaVeN 构建会采用错误的文件

MaVeN build takes, most of the times, wrong file

我使用 org.apache.maven.plugins maven-assembly-plugin 版本 2.2-beta-5 构建一个 jar-with-dependencies。我包含的其中一个 jar 包含一个 persistence.xml 文件。我构建的项目也有一个 persistence.xml 文件。构建完成良好。

然而,问题是大多数时候错误的 persistence.xml 文件最终出现在 jar-with-dependencies 中。如果我在不做任何更改的情况下重建(有时还会重建几次),那么就会出现正确的 persistence.xml

我搜索了解决方案,但找不到有效的示例。我如何在我的 pom.xml 中定义我想要我的项目的 persistence.xml 文件在 jar-with-dependencies 中而不是包含的 jar 中的文件?

我的 MaVeN 版本是 Apache Maven 3.6.3,所有构建都是使用 mvn clean package.

完成的

无法在不查看您的项目的情况下评论构建可执行文件所花费的时间。 默认情况下,Maven 将文件从 ${project.basedir}/src/main/resources 位置复制到可执行 jar 文件。因此,如果 persistence.xml 未包含在 fat jar 中,请检查您的文件夹结构并检查 xml 文件的位置。

使用 maven-shade-plugin 而不是 mavenassembly-plugin 从依赖项中排除 persistence.xml 文件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>2.3</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <filters>
                    <filter>
                        <artifact>my:other:jar</artifact>
                        <excludes>
                            <exclude>persistence.xml</exclude>
                        </excludes>
                    </filter>
                </filters>
            </configuration>
        </execution>
    </executions>
</plugin>        

有关此方法的更多信息,请参阅 Apache Maven Shade Plugin documentation