Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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
Maven:筛选persistence.xml_Maven_Filtering_War - Fatal编程技术网

Maven:筛选persistence.xml

Maven:筛选persistence.xml,maven,filtering,war,Maven,Filtering,War,在我们的PEObject中,persistence.xml位于相对目录中 /src/main/resources/META-INF 并且在不提供任何附加说明的情况下,将pom中的文件复制到 /WEB-INF/classes/META-INF 在Maven构建过程中。只要hibernate能够从中选择配置文件,就可以了。但是现在我们想集中一些配置值,因此使用maven-war插件来替换persistence.xml 过滤本身对各种其他文件执行,并按预期工作。然而,对于persistence.xml

在我们的PEObject中,
persistence.xml
位于相对目录中

/src/main/resources/META-INF

并且在不提供任何附加说明的情况下,将pom中的文件复制到

/WEB-INF/classes/META-INF

在Maven构建过程中。只要hibernate能够从中选择配置文件,就可以了。但是现在我们想集中一些配置值,因此使用
maven-war插件
来替换
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>

${basedir}/src/main/resources/META-INF/
真的
persistence.xml
文件已正确筛选,但ofc。抛出到outputdirectory的根目录中,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>

${basedir}/src/main/resources/META-INF/
真的
persistence.xml
WEB-INF/classes/META-INF
文件未正确筛选我假设过滤实际上可以工作,但由于文件已经复制到那里,maven拒绝覆盖仍然包含通配符的文件


有没有办法在不重新发明轮子的情况下实现这一点

我想出了解决办法。如果有人在同一问题上绊倒,只需发布:

上面列出的过滤被包装在
标记中,因为它实际上是关于处理webapp内容的


因此,简而言之,我告诉maven部署每个资源,不要碰它,并且在部署webresources时,尝试处理资源,并将其部署到一个资源文件夹——该文件夹已经未经处理

这里有一段适用于我的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>

org.apache.maven.plugins
maven战争插件
2.3
真的
src/main/resources/META-INF
**/persistence.xml
WEB-INF/classes/META-INF

太缺乏信息,尤其是在与Maven打交道时。谢谢Paco,这为我指明了正确的方向。我使用了
标记,而不是
,并且只能使用
META-INF
作为targetPath,但在其他方面效果很好。