如何修改Maven依赖插件的默认依赖?替换Struts 1.3.8版本
如何替换maven-dependency-plugin依赖的Struts 1.3.8版本?
我来帮你解决这个问题——公司安全合规要求禁止使用Struts 1.3.8,而maven-dependency-plugin间接依赖了这个版本,我们可以通过两种可靠的方式来替换它:
方法1:通过Dependency Management统一覆盖版本
这是最简洁的方式,能让整个项目(包括插件的间接依赖)自动使用合规的Struts版本。你只需要在项目的pom.xml中添加dependencyManagement块,指定安全的Struts版本(比如1.3.10,这是Struts 1.x系列中修复了多个安全漏洞的后续稳定版本):
<dependencyManagement> <dependencies> <!-- 统一指定合规的Struts核心版本 --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts-core</artifactId> <version>1.3.10</version> </dependency> <!-- 若插件还依赖其他Struts模块(如struts-action),一并指定 --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts-action</artifactId> <version>1.3.10</version> </dependency> </dependencies> </dependencyManagement>
添加后,Maven会自动将所有依赖链中的Struts 1.3.8替换为你指定的版本,无需手动排除旧依赖。
方法2:直接在maven-dependency-plugin中排除旧依赖并引入新版本
如果你的项目不适合用dependencyManagement统一管理,也可以直接在插件的配置中处理:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>你的插件当前版本</version> <dependencies> <!-- 排除不安全的Struts 1.3.8依赖 --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts-core</artifactId> <version>1.3.8</version> <exclusions> <exclusion> <groupId>org.apache.struts</groupId> <artifactId>struts-core</artifactId> </exclusion> </exclusions> </dependency> <!-- 引入合规的Struts版本 --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts-core</artifactId> <version>1.3.10</version> </dependency> </dependencies> </plugin> </plugins> </build>
验证替换是否成功
无论用哪种方法,都要运行以下命令确认依赖树中的Struts版本已经更新:
mvn dependency:tree -Dincludes=org.apache.struts:struts-core
输出结果里应该能看到你指定的合规版本,而不是1.3.8。
注意事项
- 尽量选择Struts 1.x系列的最新稳定版本,这些版本修复了1.3.8中的安全漏洞,且保持向后兼容性。
- 替换版本后,一定要做项目的回归测试,确保没有API兼容性问题(Struts 1.3.x系列的版本兼容性通常很好,但还是要谨慎)。
内容的提问来源于stack exchange,提问作者Ashish
相关产品推荐
相关产品推荐

