草庐IT

java - Maven - 从 x 管理的版本,因重复而省略?

coder 2023-08-31 原文

当它声明从 x 管理的版本时,我无法理解 Maven 依赖树中会发生什么;省略重复。

例如,假设我在 server-a 的依赖管理部分定义了 enterprise-data-2.4

我在 server-a 的依赖关系树中得到以下内容,其中一个依赖关系 server-b 拉入 enterprise-data-2.4.

[INFO] +- hello.world.welcome.to:server-b:jar:3.1-SNAPSHOT:runtime
[INFO] |  +- (hello.world.where.am: enterprise-data:jar:2.4:runtime - version managed from 3.0; omitted for duplicate)

假设 server-b 是唯一拉入 enterprise-data-2.4 的 jar,我的理解是 server-a 将始终拉入在 enterprise-data-2.4 中。这是正确的吗?

但是,我在 server-b 中的代码依赖于 enterprise-data-3.0 并且 server-b 的编译时依赖于企业数据 3.0

现在,我有一个测试项目,假设 test-b 测试 server-a 项目中存在的 server-b jar 和对 enterprise-data-3.0 具有测试依赖性。这些测试直接命中 server-a 上的代码。

当我在 test-b 中运行我的测试时,我是否应该在尝试访问 enterprise-data-3.0 中存在的功能时遇到错误,因为它没有被引入 server-a 还是会通过,因为对 enterprise-data-3.0 有测试依赖?它目前通过了,但我不确定测试依赖性如何足够。

请帮助我理解。

编辑:我正在使用 maven-3

谢谢。

最佳答案

For example, let's assume that I have enterprise-data-2.4 defined in the dependency management section of server-a.

那么你总是会得到 2.4,即使只有依赖于 1.8 的 JAR。依赖管理覆盖依赖调解。

Assuming server-b is the only jar pulling in enterprise-data-2.4, my understanding is that server-a will always pull in enterprise-data-2.4 here. Is this correct?

假设您没有依赖管理,那么是的。如果有多个依赖项依赖于不同的版本,那么根据 Maven 版本 > 2.0.9 的依赖项调解规则,首先加载哪个(及其传递依赖项)是一个问题。其他将是:“从 x 管理并省略重复项”。

When I run my tests in test-b should I get errors while attempting to access functionality present in enterprise-data-3.0 since it's not being pulled in by server-a or will it pass because there is a test dependency on enterprise-data-3.0? It passes currently but I am not sure how a test dependency is sufficient.

如果它使用不兼容的代码提取错误的版本,是的,您会看到错误。对于 Maven 3,使用 3.0 定义测试范围依赖项并使用 2.4 定义编译范围依赖项将意味着 Maven 覆盖 2.4 并使用在测试范围上定义的较新的范围。参见 this question and its answers了解更多详情。

不过,您始终可以使用 test-b 中的依赖项管理来修复您要使用的每个依赖项的版本。

关于java - Maven - 从 x 管理的版本,因重复而省略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27572760/

有关java - Maven - 从 x 管理的版本,因重复而省略?的更多相关文章

  1. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  2. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  3. java - 等价于 Java 中的 Ruby Hash - 2

    我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/

  4. ruby-on-rails - 在 ruby​​ .gemspec 文件中,如何指定依赖项的多个版本? - 2

    我正在尝试修改当前依赖于定义为activeresource的gem:s.add_dependency"activeresource","~>3.0"为了让gem与Rails4一起工作,我需要扩展依赖关系以与activeresource的版本3或4一起工作。我不想简单地添加以下内容,因为它可能会在以后引起问题:s.add_dependency"activeresource",">=3.0"有没有办法指定可接受版本的列表?~>3.0还是~>4.0? 最佳答案 根据thedocumentation,如果你想要3到4之间的所有版本,你可以这

  5. ruby-on-rails - 如果我将 ruby​​ 版本 2.5.1 与 rails 版本 2.3.18 一起使用会怎样? - 2

    如果我使用ruby​​版本2.5.1和Rails版本2.3.18会怎样?我有基于rails2.3.18和ruby​​1.9.2p320构建的rails应用程序,我只想升级ruby的版本,而不是rails,这可能吗?我必须面对哪些挑战? 最佳答案 GitHub维护apublicfork它有针对旧Rails版本的分支,有各种变化,它们一直在运行。有一段时间,他们在较新的Ruby版本上运行较旧的Rails版本,而不是最初支持的版本,因此您可能会发现一些关于需要向后移植的有用提示。不过,他们现在已经有几年没有使用2.3了,所以充其量只能让更

  6. ruby-on-rails - 获取 inf-ruby 以使用 ruby​​ 版本管理器 (rvm) - 2

    我安装了ruby​​版本管理器,并将RVM安装的ruby​​实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby​​。有没有办法让emacs像shell一样尊重ruby​​的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el

  7. java - 从 JRuby 调用 Java 类的问题 - 2

    我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www

  8. java - 我的模型类或其他类中应该有逻辑吗 - 2

    我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我

  9. java - 什么相当于 ruby​​ 的 rack 或 python 的 Java wsgi? - 2

    什么是ruby​​的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht

  10. ruby-on-rails - 事件管理员日期过滤器日期格式自定义 - 2

    是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s

随机推荐