当前位置: 首页 > 面试题库 >

是否有Maven“仅编译器”范围用于依赖项工件

梁骞仕
2023-03-14
问题内容

我意识到这更多是语义上的追求,而不是功能上的追求。

我有三种类型的编译范围依赖项:

  1. 仅编译范围,在运行时不使用。GWT客户端开发人员,MVP4G,RestyGWT,源保留注释处理器。我使用REST,因此不需要GWT服务器端。

  2. 提供-编译所需的Hibernate jar,但由JBoss提供。

  3. 编译+运行时jars。

对于情况2,我们可以使用提供的范围。情况3,我们将使用编译范围。

但是,对于情况1,即使JBoss根本不提供这些文件,我也使用提供的范围。在运行时也不需要它们。

无论如何,您是否认为Maven应该为除编译时才真正不需要伪像的范围提供“提供”的同义词?也许应该有一个“仅编译”作用域?


问题答案:

如果jars不是真正的“运行时”依赖项(仅用于构建),而对于最终工件不是,则可以通过各种方式将其排除:

  1. 程序集描述符中的排除
  2. 排除在jar(或war,ear,其他)插件配置
  3. 阴影插件最小化罐子目标

我同意交付不必要的类很烦人(我已经在生产部署中看到过junit和testng jars-brrrr …),但是从所有实际目的来看,这只是一个很小的问题。

如果您遇到依赖冲突(即,交付库或框架的“所有部门”版本),那就另当别论了,但听起来并不像您在这里面临的那样。



 类似资料:
  • 我想知道为什么我的简单spring boot项目不再有效。它基本上直接来自spring示例,其中一个控制器说hello world。我使用的是spring boot starter jetty和spring boot v1.1.10(也尝试了1.2.0)。我有一些使用嵌入式solr的单元测试,所以solr核心被标记为<代码> 我认为测试范围的依赖关系不应该干扰编译范围的依赖关系,并且“仅适用于测试

  • 在为android项目添加新的依赖项时,特别是在中,在中,有三个作用域选项compile/provide/apk。

  • 目前我的项目使用Spring启动测试如下: 但是,尽管有测试范围,它还是引入了sping-core(这是此版本中易受攻击的tpl)作为编译范围传递依赖项,并且它出现在我编译的二进制文件中。 我知道我可以通过使用测试范围显式拉动Spring核心来解决这个问题: 然而,这不应该是必要的。为什么只有在将依赖项拉入编译范围的测试中才有依赖项?

  • 根据Maven完整参考中的图像,当直接依赖关系范围为“编译”并且传递依赖关系的范围为“提供”时,传递依赖关系将被忽略。 我的问题是,如果直接依赖类从我的项目的传递依赖编译中扩展一个类将失败,因为在编译时'javac'将从传递依赖中寻找由直接依赖扩展的类,并且不会在编译时类路径中找到它,因为maven忽略了它。 基本上这就是编译直接依赖时编译传递依赖范围而不是运行时的原因,为什么提供传递依赖范围时不

  • Java和Maven新手。 我试图配置我的应用程序,以便我可以通过cmd线生成一个jar,其中包含我所有的依赖项。 据我所知,我正在正确设置Pom以使用此插件:https://github.com/javafx-maven-plugin/javafx-maven-plugin 以下是我在Pom中的依赖项: 在我的

  • 问题内容: 可以运行以了解模块任务的依赖性。有没有办法找到 buildscript依赖 的 传递依赖 ? 示例: 直接取决于: 可以在MVNRepository上看到。但是,这些工件有其自己的依赖性。有没有找到方法而无需手动遍历整个依赖树的方法? 为了澄清起见,我正在谈论的类路径由以下方式定义: 问题答案: 您可以使用以下命令: Udacity提供了很棒的Android Gradle 教程,但是您