我得到了一个具有以下结构的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构建/打包我的项目?
答案 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文件。