gpt4 book ai didi

java - 安全删除 "unused"运行时依赖项

转载 作者:行者123 更新时间:2023-12-01 09:17:58 26 4
gpt4 key购买 nike

我有一个由 Maven 管理的 Java 项目,部署到 Glassfish。

我的问题是,如何安全地删除 maven 管理的可能是运行时依赖项的依赖项?

我用过 maven dependency plugin识别遗留项目中未使用的依赖项:

mvn dependency:analyze -DignoreNonCompile=true

输出如下所示:

[INFO] --- maven-dependency-plugin:2.8:analyze (default-cli) @ MyProject ---
[WARNING] Used undeclared dependencies found:
[WARNING] commons-collections:commons-collections:jar:3.2:compile
[WARNING] commons-beanutils:commons-beanutils:jar:1.7.0:compile
[WARNING] org.apache.cxf:cxf-core:jar:3.1.3:compile
[WARNING] junit:junit:jar:4.11:test
[WARNING] org.springframework:spring-test:jar:4.1.6.RELEASE:test
[WARNING] com.fasterxml.jackson.core:jackson-databind:jar:2.4.3:compile
[WARNING] ca.uhn.hapi:hapi-base:jar:2.2:compile
[WARNING] org.apache.camel:camel-core:jar:2.15.3:compile
[WARNING] Unused declared dependencies found:
[WARNING] org.apache.camel:camel-cxf:jar:2.15.3:compile
[WARNING] org.apache.cxf:cxf-rt-bindings-soap:jar:3.1.3:compile
[WARNING] org.apache.camel:camel-jms:jar:2.15.3:compile
[WARNING] net.sf.saxon:Saxon-HE:jar:9.5.1-5:compile
[WARNING] org.apache.camel:camel-mina2:jar:2.15.3:compile
[WARNING] com.google.code.gson:gson:jar:2.7:compile
[WARNING] org.springframework:spring-jms:jar:4.2.1.RELEASE:compile
[WARNING] org.springframework:spring-web:jar:4.2.1.RELEASE:compile
[WARNING] org.springframework:spring-orm:jar:4.2.1.RELEASE:compile
[WARNING] org.apache.cxf:cxf-rt-frontend-jaxws:jar:3.1.3:compile
[WARNING] org.apache.camel:camel-spring-ws:jar:2.15.3:compile
[WARNING] org.apache.camel:camel-saxon:jar:2.15.3:compile
[WARNING] org.apache.camel:camel-servlet:jar:2.15.3:compile
[WARNING] org.apache.camel:camel-hl7:jar:2.15.3:compile
[WARNING] org.apache.camel:camel-spring:jar:2.15.3:compile
[WARNING] org.apache.camel:camel-ftp:jar:2.15.3:compile
[WARNING] org.apache.camel:camel-velocity:jar:2.15.3:compile
[WARNING] ch.qos.logback:logback-classic:jar:1.1.2:compile
[WARNING] org.apache.cxf:cxf-rt-transports-http:jar:3.1.3:compile
[WARNING] org.apache.camel:camel-ejb:jar:2.15.3:compile
[WARNING] org.slf4j:slf4j-api:jar:1.7.7:compile

我想删除这些“未使用的”依赖项,但我担心应用程序在运行时失败。

ignoreNonCompile我启用了“忽略未使用的依赖项分析的运行时/提供的/测试/系统范围”的选项,但据我所知,设置依赖项的范围是开发人员所做的事情(它不会自动发生),所以我我认为我无法确定这些“未使用”的依赖项实际上不是运行时依赖项。

我之所以将这个问题标记为apache-camel,是因为我担心由于 Camel DSL,maven 依赖插件特别有可能错误识别“未使用的”Camel 依赖项。例如,camel-ftp 组件由 DSL 使用,如下所示:

from("ftp://foo@myserver?password=secret&ftpClient.dataTimeout=30000").to("bean:foo");

我认为,对于 Maven 而言,这只是一个字符串,因此它可能没有意识到该项目对 camel-ftp 有真正的依赖。组件。

我的问题是,如何安全地删除可能是运行时依赖项的依赖项?

最佳答案

Camel 动态实例化类并使用接口(interface),而不是像camel-ftp 这样的具体类。在这种情况下,字节码工具对于分析依赖关系没有用处。

解决方案是拥有一套全面的单元测试,涵盖您的快乐路径和错误路径场景,并针对一组精简的声明的 Maven 依赖项进行测试。

如果您确实想减少依赖关系,请考虑消除 *-spring 组件的使用并使用蓝图或 Java DSL。 Spring 组件往往有很多传递依赖。

关于java - 安全删除 "unused"运行时依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40390691/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com