在构建战争时过滤 src/main/webapp/jsp 下的文件



在我的java webapp项目中,我把所有的jsp文件都放在src/main/webapp/jsp. 如何在构建战争时启用筛选并将属性占位符替换为实际值?

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <filters><filter>${basedir}/src/main/resources/filter.properties</filter></filters>
        <webResources>
            <resource>
                <directory>src/main/webapp/jsp</directory>
                <targetPath>/jsp/</targetPath>
                <filtering>true</filtering>
            </resource>
        </webResources>
    </configuration>
</plugin>

附加 mvn 包命令的控制台输出:

[exec] [INFO] Copying webapp webResources [projectbasedir/src/main/webapp/jsp] to [projectbasedir/target/myapp]
[exec] [INFO] Copying webapp resources [projectbasedir/src/main/webapp]

jsp文件在"Copying webapp webResources"步骤中被正确过滤,但"Copying webapp resources"步骤会覆盖所有这些更改,因为它会重新复制从src/main/webapp folder到目标文件夹的所有内容。

如何使此筛选工作?

尝试用这个配置替换它,区别在于使用directory作为src/main/webapp并在includes中包含子文件夹。无论出于何种原因,当directorywarSourceDirectory匹配时,它都可以正常工作。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <filters><filter>${basedir}/src/main/resources/filter.properties</filter></filters>
        <webResources>
            <resource>
                <directory>src/main/webapp</directory>
                <targetPath>/jsp/</targetPath>
                <filtering>true</filtering>
                <includes>
                    <include>jsp/**</include>
                </includes>
            </resource>
        </webResources>
    </configuration>
</plugin>

最新更新