Java 不允许导入某些可传递的maven依赖项

Java 不允许导入某些可传递的maven依赖项,java,eclipse,maven,ide,dependencies,Java,Eclipse,Maven,Ide,Dependencies,使用maven,我们可以排除一些可传递依赖项 但是,如果我们在运行时需要它们,并且作为架构师,我不希望它们被使用并成为API依赖项,该怎么办呢 是否有工具来定义和检查不需要的已用依赖项(即,在某些Java类中导入) 这里的搜索给了我关于maven的提示 但这可能很难定义。也许应该使用IDE工具 如何禁止导入和使用某些可传递的maven依赖项? 这样代码就不会访问堆栈的不同层。 是的,我知道一些教育工作也应该进行。在处理maven时,有一个依赖范围的概念。通常,对于Java EE应用程序,您会看

使用maven,我们可以排除一些可传递依赖项

但是,如果我们在运行时需要它们,并且作为架构师,我不希望它们被使用并成为API依赖项,该怎么办呢

是否有工具来定义和检查不需要的已用依赖项(即,在某些Java类中导入)

这里的搜索给了我关于maven的提示

但这可能很难定义。也许应该使用IDE工具

如何禁止导入和使用某些可传递的maven依赖项? 这样代码就不会访问堆栈的不同层。

是的,我知道一些教育工作也应该进行。

在处理maven时,有一个依赖范围的概念。通常,对于Java EE应用程序,您会看到3个作用域的利用率最高:

编译-如果未指定任何范围,则这是使用的默认范围。这些将在项目的所有类路径中可用

提供-当编译不需要依赖项,但在运行时应该在容器中时,使用此作用域

测试-这是测试所需的依赖项,但不是应用程序正常使用所需的依赖项


基于您的用例,我相信您希望利用提供的依赖范围,其中依赖关系在运行时是需要的,但在编译过程中不应该对应用程序可用。有关依赖范围的更多信息,请访问:

在处理maven时,有一个依赖范围的概念。通常,对于Java EE应用程序,您会看到3个作用域的利用率最高:

编译-如果未指定任何范围,则这是使用的默认范围。这些将在项目的所有类路径中可用

提供-当编译不需要依赖项,但在运行时应该在容器中时,使用此作用域

测试-这是测试所需的依赖项,但不是应用程序正常使用所需的依赖项


基于您的用例,我相信您希望利用提供的依赖范围,其中依赖关系在运行时是需要的,但在编译过程中不应该对应用程序可用。您可以在以下位置阅读有关依赖关系作用域的更多信息:

既不是maven也不是disallowing dependencies,但它会扫描代码中的实际依赖关系,以确定哪些是依赖关系。也许你可以修改这一部分。很高兴知道,但maven也需要类似的。我建议深入研究一下,哪些规则可以定义,等等。既不是maven,也不是不允许依赖,但它会扫描代码中的实际依赖,以找出哪些是。也许你可以修改这一部分。很高兴知道,但maven也需要类似的。我建议你深入研究一下,可以定义这样的规则等。这不会阻止任何人使用不应该使用的实现模块中的类。在这种情况下,应该使用API模块中的类……这种情况的一种解决方案是将规范/API与实现分开打包。只有实现在运行时才可用。有几个框架允许您这样做。这不会阻止任何人使用不应该使用的实现模块中的类。在这种情况下,应该使用API模块中的类……这种情况的一种解决方案是将规范/API与实现分开打包。只有实现在运行时才可用。有几个框架允许您这样做。比如OSGI。