如何从项目中删除 commons-beanutils-core
How to remove commons-beanutils-core from a project
背景
commons-beanutils-core
1.8.0 版有一些我试图避免的安全问题。
所以,我正在使用 commons-beanutils
1.9.4
问题
我似乎无法阻止其他库导入 commons-beanutils-core
1.8.0 版。我的 pom 文件中没有任何地方包含它。我假设其他一些依赖隐含地包含它。而且,由于 commons-beanutils-core
不再受支持,并且他们已经转向仅对所有较新版本使用 commons-beanutils
,当我明确写道:
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.4</version>
</dependency>
它不会删除对 commons-beanutils-core
的隐式引用。
问题
如何让其他软件包不下载 commons-beanutils-core
版本 1.8.0?
备注:
还有其他包作为依赖项下载,我没有明确包含在我的 pom.xml 中。扫描显示其中一些包存在安全风险。因此,我的解决方案是明确地包含以前隐式包含的包的更高版本。并且删除了旧版本的包。但是这个解决方案在这里不起作用,因为 commons-beanutils-core
在最新版本中不再使用。
更新 1
我了解到包含以下代码将使 pom.xml 认为将提供 1.8.0,并且在某种意义上它会提供,因为我将包含 1.9.4。但我不确定代码是否会使用 1.9.4,如果它认为它应该寻找 1.8.0。此代码使我能够删除 1.8.0,但我不知道我在这里的欺骗是否会导致问题。
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils-core</artifactId>
<version>1.8.0</version>
<scope>provided</scope>
</dependency>
使用提供的作用域会对运行时产生副作用。如果范围依赖项在编译中使用但未打包,那么如果 commons-beanutils-core
具有 commons-beanutils
中不存在的方法,您将得到 NoSuchMethodException
.
更好的解决方案是使用 mvn dependency:tree
来查找哪些依赖项依赖于 commons-beanutils-core
和
要么将依赖项更新为使用 commons-beanutils
的 1.9.4
版本的版本。
或使用exclusion
从使用commons-beanutils-core
作为依赖项的依赖项中排除commons-beanutils-core
。
如果可以使用方法一,如果找不到使用最新版本的依赖,则使用方法二更好。
背景
commons-beanutils-core
1.8.0 版有一些我试图避免的安全问题。
所以,我正在使用 commons-beanutils
1.9.4
问题
我似乎无法阻止其他库导入 commons-beanutils-core
1.8.0 版。我的 pom 文件中没有任何地方包含它。我假设其他一些依赖隐含地包含它。而且,由于 commons-beanutils-core
不再受支持,并且他们已经转向仅对所有较新版本使用 commons-beanutils
,当我明确写道:
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.4</version>
</dependency>
它不会删除对 commons-beanutils-core
的隐式引用。
问题
如何让其他软件包不下载 commons-beanutils-core
版本 1.8.0?
备注:
还有其他包作为依赖项下载,我没有明确包含在我的 pom.xml 中。扫描显示其中一些包存在安全风险。因此,我的解决方案是明确地包含以前隐式包含的包的更高版本。并且删除了旧版本的包。但是这个解决方案在这里不起作用,因为 commons-beanutils-core
在最新版本中不再使用。
更新 1
我了解到包含以下代码将使 pom.xml 认为将提供 1.8.0,并且在某种意义上它会提供,因为我将包含 1.9.4。但我不确定代码是否会使用 1.9.4,如果它认为它应该寻找 1.8.0。此代码使我能够删除 1.8.0,但我不知道我在这里的欺骗是否会导致问题。
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils-core</artifactId>
<version>1.8.0</version>
<scope>provided</scope>
</dependency>
使用提供的作用域会对运行时产生副作用。如果范围依赖项在编译中使用但未打包,那么如果 commons-beanutils-core
具有 commons-beanutils
中不存在的方法,您将得到 NoSuchMethodException
.
更好的解决方案是使用 mvn dependency:tree
来查找哪些依赖项依赖于 commons-beanutils-core
和
要么将依赖项更新为使用
commons-beanutils
的1.9.4
版本的版本。或使用
exclusion
从使用commons-beanutils-core
作为依赖项的依赖项中排除commons-beanutils-core
。
如果可以使用方法一,如果找不到使用最新版本的依赖,则使用方法二更好。