当它声明从 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/
我正在使用i18n从头开始构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在rubyonrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi
我在我的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服务器更新战俘
我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/
我正在尝试修改当前依赖于定义为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之间的所有版本,你可以这
如果我使用ruby版本2.5.1和Rails版本2.3.18会怎样?我有基于rails2.3.18和ruby1.9.2p320构建的rails应用程序,我只想升级ruby的版本,而不是rails,这可能吗?我必须面对哪些挑战? 最佳答案 GitHub维护apublicfork它有针对旧Rails版本的分支,有各种变化,它们一直在运行。有一段时间,他们在较新的Ruby版本上运行较旧的Rails版本,而不是最初支持的版本,因此您可能会发现一些关于需要向后移植的有用提示。不过,他们现在已经有几年没有使用2.3了,所以充其量只能让更
我安装了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
我正在尝试使用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
我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s