我有一个maven项目,它有不同的开发和生产环境。 web.xml中有一些部分需要删除才能进行生产。直到今天,还有一个基于antrunner的xml任务才能完成。现在我想删除脚本部分并引入2个版本的web.xml。基本上,我会将路径“WEB-INF / web.xml”扩展为“WEB-INF / dev / web.xml”。这是在两个配置文件中配置的:
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<webxml.path>${project.basedir}/src/main/webapp/WEB-INF/dev/WEB.xml</webxml.path>
</properties>
</profile>
其他配置文件也是如此,只是路径不同。
稍后,我将使用maven-war-plugin确保maven找到该文件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>default-war</id>
<phase>package</phase>
<goals>
<goal>war</goal>
</goals>
<configuration>
<warSourceDirectory>${project.build.directory}/${project.build.finalName}</warSourceDirectory>
<webXml>${webxml.path}</webXml>
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</execution>
</executions>
</plugin>
一切正常,但只要我从命令行构建。 我告诉Spring Tool Suite 3.7使用开发配置文件sadly it somehow refuses to resolve that path进行更新。
当我从上下文菜单中使用“create Descriptor-Stub”时,它甚至会创建一个名为$ {webxml.path}的文件,其中包含默认的web.xml内容。
提供的错误消息是:
缺少web.xml,failOnMissingWebXml设置为true
如果可能,我不想禁用该检查(failOnMissingWebXml)。
有没有办法让STS更加渴望解决变量?
更新: 在编写本文时,我发现,在从IDE构建时,可以使用maven-resources插件手动将文件复制到相应的路径。让m2e尊重war-plugin的属性会很棒。或者这根本不可能?构建过程是否由maven本身执行,即使我明确指定了外部版本?