Maven版本:3.5.4
我的网站目录不在标准位置。在/ web
中Maven War配置
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<webResources>
<!--
Filter these files to look for ${my.maven.property} to replace them
at build time with a maven property value
-->
<resource>
<filtering>true</filtering>
<directory>web/WEB-INF</directory>
<includes>
<include>**/web.xml</include>
</includes>
</resource>
</webResources>
<warSourceDirectory>web</warSourceDirectory>
<failOnMissingWebXml>true</failOnMissingWebXml>
<webXml>web/WEB-INF/web.xml</webXml>
<packagingExcludes>
${exclude.files.on.build}
</packagingExcludes>
</configuration>
</plugin>
pom.xml中的属性片段
<properties>
...
<!-- web.xml vars -->
<web.session.cookie.secure>true</web.session.cookie.secure> <!-- session cookie only sent over https -->
...
</properties>
web.xml代码段
<cookie-config>
...
<secure>${web.session.cookie.secure}</secure>
...
</cookie-config>
不会在web.xml中替换属性“ $ {web.session.cookie.secure}”,并且属性名称保留在生成的war文件中。我无法查明配置错误。我正在Intellij中工作,无论我是从intellij菜单构建构件还是发出mvn war:exploded命令,都得到相同的结果。
我假设它可能与Web目录位置和缺少的配置项有关。除了在输出中未替换属性的问题外,Maven构建按预期运行。
关于为什么不能使用过滤Maven-war-plugin进行替换的想法?
答案 0 :(得分:1)
maven-war-plugin
使用${basedir}
作为pom的位置,因此应通过从那里开始的相对路径来引用用于过滤的目标目录。
<resource>
<filtering>true</filtering>
<directory>${basedir}/web/WEB-INF</directory>
<includes>
<include>**/web.xml</include>
</includes>
</resource>
可以在mvn help:effective-pom
中检查实际路径。