Maven 阴影插件替换 persistence.xml

Posted

技术标签:

【中文标题】Maven 阴影插件替换 persistence.xml【英文标题】:Maven shaded plugin replacing persistence.xml 【发布时间】:2018-10-13 11:27:36 【问题描述】:

在 maven 包期间,我有一个奇怪的行为。我有一个依赖于“B”的工件“A”。

在“A”中,我有一个 META-INF 文件夹,其中包含一个 persistence.xml,在“B”中,我有一个 META-INF 文件夹,其中包含一个 persistence.xml。

这是 pom 的 A 相对于 shade 插件和依赖的文件

    <dependency>
        <groupId>com.mycopany</groupId>
        <artifactId>B</artifactId>
        <version>1.0.2</version>
       </dependency>
   </dependencies>


        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.4.2</version>
            <configuration>
                <filters>
                    <filter>
                        <artifact>*:*</artifact>
                        <excludes>
                            <exclude>META-INF/*.SF</exclude>
                            <exclude>META-INF/*.DSA</exclude>
                            <exclude>META-INF/*.RSA</exclude>
                        </excludes>
                    </filter>
                </filters>
                <shadedArtifactAttached>true</shadedArtifactAttached>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

考虑到“B”也是阴影工件,我如何从“B”中排除 persistence.xml 文件?

【问题讨论】:

【参考方案1】:

使用第二个过滤器并像这样排除 persistence.xml

                <filter>
                    <artifact>B</artifact>
                    <excludes>
                        <exclude>path/persistence.xml</exclude>  
                    </excludes>
                </filter>

更多细节在这个question 并在official documentation

【讨论】:

不知何故这对我不起作用。你能举个“路径”的例子吗?【参考方案2】:

我找到的一个解决方案是在没有 persistence.xml 配置文件的情况下创建 JPA EntityManager。 我使用了 PersistenceUnitInfo。

这是原帖:Create JPA EntityManager without persistence.xml configuration file

【讨论】:

这将对 PersistenceUnitInfo:docs.oracle.com/javaee/7/api/javax/persistence/spi/… 派上用场

以上是关于Maven 阴影插件替换 persistence.xml的主要内容,如果未能解决你的问题,请参考以下文章

Maven 阴影插件重定位不更新资源文件中的条目

maven如何用默认替换生命周期默认插件

为 javax.persistence 编写 Maven 依赖项

使用maven将persistence.xml放在库jar中的哪里?

Maven 可以重新签署依赖项吗?

如何通过 Maven2 pom.xml 获取 Hibernate + javax.persistence