在我们的程序中,persistence.xml
位于相对目录中
/src/main/resources/META-INF
,
并且在不给出任何附加指令的情况下,将文件中的pom复制到
/WEB-INF/classes/META-INF
在Maven构建过程中。到目前为止,hibernate能够从中选择配置文件,这是很好的。但是现在我们想集中一些配置值,因此使用maven-war-plugin
来替换persistence.xml
中的临时通配符。
过滤本身对各种其他文件执行,并按预期工作。然而,对于persistence.xml
来说,由于各种原因,它似乎失败了:
当只将persistence.xml
添加到webResources
时
<resource>
<directory>${basedir}/src/main/resources/META-INF/</directory>
<filtering>true</filtering>
<includes>
<include>persistence.xml</include>
</includes>
</resource>
文件被正确地过滤,但是ofc。抛到输出目录的根目录中,而hibernate不查找它。
当试图提供所需的目标文件夹时:
<resource>
<directory>${basedir}/src/main/resources/META-INF/</directory>
<filtering>true</filtering>
<includes>
<include>persistence.xml</include>
</includes>
<targetPath>WEB-INF/classes/META-INF</targetPath>
</resource>
文件未被正确过滤。--我假设过滤实际上可以工作,但是由于文件已经复制到那里了,maven拒绝覆盖仍然包含通配符的文件。
有什么想法,如何使这个工作,而不是重新发明车轮?
发布于 2014-09-23 15:31:06
我想出了解决办法。如果有人在同样的问题上绊倒了,那就发吧:
上面列出的过滤被包装在<webResources>
标签中,因为它实际上是关于处理webapp内容的。
因此,简单地说,我告诉maven部署每个资源时,不要碰它,在部署webresources时,尝试处理一个资源,并将其部署到一个未处理的中--这已经发生了。
发布于 2017-08-27 08:45:24
这里有一段适合我的XML代码片段:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<webResources>
<resource>
<filtering>true</filtering>
<directory>src/main/resources/META-INF</directory>
<includes>
<include>**/persistence.xml</include>
</includes>
<targetPath>WEB-INF/classes/META-INF</targetPath>
</resource>
</webResources>
</configuration>
</plugin>
https://stackoverflow.com/questions/25996450
复制相似问题