maven资源过滤跳过文件

时间:2017-06-08 08:39:30

标签: java maven

我得到了一个具有以下结构的Vaadin项目:

Project-Root
  src
    main
    resources
      properties.json
      META-INF
        persistance.xml
    webapp
      WEB-INF
        classes
          hibernate-dashboard.cfg.xml
          quartz.properties

到目前为止,我从IDE(IntelliJ)

构建了我的项目
mvn vaadin:compile vaadin:compile-theme -P development

然后使用'Build'打包WAR - > '构建工件......'并部署了WAR。

我的资源过滤如下:

..
<build>
 <resources>
     <resource>
         <directory>src/main/webapp/WEB-INF/classes/</directory>
         <filtering>true</filtering>
     </resource>
     <resource>
         <directory>src/main/resources/</directory>
         <filtering>true</filtering>
     </resource>
     <resource>
         <directory>src/main/resources/META-INF</directory>
         <filtering>true</filtering>
     </resource>
 </resources>
 <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-resources-plugin</artifactId>
     <version>2.6</version>
     <configuration>
         <encoding>${project.encoding}</encoding>
     </configuration>
 </plugin>

问题:当我尝试使用maven

构建整个项目时
mvn clean package -P development

webapp / WEB-INF / classes下的资源被跳过,它们位于target / Project / WEB-INF / classes目录中,但是变量是$ {..}(hibernate-dashboard.cfg.xml和quartz .properties)

正确过滤剩余资源(properties.json和persistance.xml)。

问题:如何过滤我的所有资源并使用maven构建/打包我的项目?

2 个答案:

答案 0 :(得分:1)

这里真正的问题是你做了一些非常奇怪的事情,应该选择改变事物,以便以不同的方式做事。目录:

src/main/webapp/WEB-INF/classes

不应该存在 - 您不应该在该路径上有一个类目录。如果您希望将过滤后的文件放入target/.../WEB-INF/classes,然后将这些文件放入src/main/resources,maven会将它们复制到相应的目标目录中,如果您很好地问它,它会过滤它们(填充)具有复制时当前上下文值的模板)。

你唯一需要的是:

<resources>
    <resource>
        <directory>src/main/resources/</directory>
        <filtering>true</filtering>
    </resource>
</resources>

如果您认为您需要一个类目录,那么您可能犯了一个错误,解决此问题的最快方法是不再做错误的事情,而不是尝试在此配置maven方式。

答案 1 :(得分:-1)

Maven只处理src/main/resources中的文件,所以我添加了

<configuration>
  <webResources>
      <resource>
          <directory>src/main/webapp/WEB-INF/classes</directory>
          <targetPath>WEB-INF/classes</targetPath>
          <filtering>true</filtering>
      </resource>
  </webResources>
</configuration>

到maven-war-plugin,现在我得到一个正确的打包WAR文件。