如何解决如何防止Maven在Struts2应用程序中替换$ {id}
我在Struts2上开发了一个Java应用程序。我们以前使用Ant构建,并且正准备过渡到Maven。
当我运行mvn package
时,${id}
中struts.xml
的所有实例都被com.appname:appname:war:localhost-SNAPSHOT
文件夹中的/target
替换了(包含构建输出)
我们最终获得了很多无效的重定向。
例如,这就是/src
中的原始内容:
<action name="doaddadmin" class="dashboardaction.DoAddAdmin">
<result name="ERROR">/pages/error.jsp</result>
<result type="redirectAction">
<param name="actionName">manageadmins</param>
<param name="id">${id}</param>
</result>
</action>
但是在/target
中变成了这样:
<action name="doaddadmin" class="dashboardaction.DoAddAdmin">
<result name="ERROR">/pages/error.jsp</result>
<result type="redirectAction">
<param name="actionName">manageadmins</param>
<param name="id">com.appname:appname:war:localhost-SNAPSHOT</param>
</result>
</action>
我的pom.xml
当前看起来像:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- Version attributes will be updated by automated Github Workflow -->
<groupId>com.appname</groupId>
<artifactId>appname</artifactId>
<version>${revision}</version>
<packaging>war</packaging>
<name>appname</name>
<description>AppName Platform</description>
<url>https://github.com/appname/platform-appname</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<revision>localhost-SNAPSHOT</revision>
</properties>
<profiles>
<!-- Localhost environment -->
<profile>
<id>localhost</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<config.livemode>false</config.livemode>
<config.web_url>http://localhost:8081/</config.web_url>
<config.log4jfile>${sys:catalina.base}/logs/appname-%d{yyyy-MM-dd}.%i.log</config.log4jfile>
</properties>
</profile>
</profiles>
<repositories>
<repository>
<id>javaxt.com</id>
<url>http://www.javaxt.com/maven</url>
</repository>
<!-- Our custom packages are hosted here -->
<repository>
<id>github-appname</id>
<name>GitHub AppName Apache Maven Packages</name>
<url>https://maven.pkg.github.com/appname/platform-appname</url>
</repository>
</repositories>
<dependencies>
<!-- ...other dependencies -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.5.2</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
</resource>
</resources>
<pluginManagement>
<!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
</plugin>
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.0.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
<reporting>
<plugins>
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
</plugin>
</plugins>
</reporting>
<distributionManagement>
<repository>
<id>github-appname</id>
<name>GitHub AppName Apache Maven Packages</name>
<url>https://maven.pkg.github.com/appname/platform-appname</url>
</repository>
</distributionManagement>
</project>
如何禁止Maven自动替换${id}
中struts.xml
的所有实例?
解决方法
您可能需要按照以下说明停用资源过滤:
https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。