草庐IT

java - 平台强制版本控制机制是 Java 最需要的特性吗?

coder 2024-03-12 原文

作为开发人员,我经常对可以让您的生活更轻松的新语言功能感兴趣。例如,Java 5 为该语言带来了泛型和注释,这些功能绝对可以提高您的工作效率。

然而,当我回顾将近十年在 Java 平台上的工作时,我发现与版本控制相关的问题是效率低下和不必要的努力的最大罪魁祸首。寻找正确版本的 jar、试图调和一些版本控制冲突、升级依赖库等的时间和时间。当我开始使用 Java 工作时,事情并没有那么困难,你会有一些第 3 方库,仅此而已.今天,您的典型 Web 应用程序可能很容易使用:Spring Framework、Hibernate、Struts,应有尽有。所有这些都带有许多依赖的第 3 方库。今天,我的耳朵文件通常包括大约 40 个或更多的第 3 方库。一个真正的 jar hell !

有了注解,我就不必管理 Hibernate 的配置文件了。一个很好的功能,但我没有看到因为我将描述符保存在单独的文件中而引起的很多问题。有了泛型,我就不用写 cast 语句了,但在我的整个编程载体中,我不记得有一个 bug 可以通过使用类型安全容器来避免。版本控制问题的解决方案不是更有值(value)吗?

所有这些问题都导致了像 Maven 这样的工具的出现。 , ivy , One Jar , Jar Jar Links (不是开玩笑!),甚至恰本地命名为 Jar Hell等。即使您使用了其中的一些工具,您也远不能避免这些问题。我使用 Maven 2,它提供了很大的帮助。尽管如此,它本身就是一个世界。新手程序员可以花一些时间来学习它。将遗留项目迁移到 Maven 结构也很痛苦。

看来,在 .Net 中,他们已经吸取了 dll hell 的教训,并且 .Net 程序集的管理要简单得多。

似乎有计划为 Java 平台和 OSGI 等替代方案解决这个问题。我认为迫切需要一些基本的和平台强制的版本控制机制

最佳答案

我也已经使用 Java 十多年了,但我不得不说我根本没有发现很多 JAR hell 问题(即使使用您提到的所有第 3 方工具)!我发现 Maven 是一个糟糕的工具,所以用 ant 构建一切。

在我们公司,我们有一个基于每个项目的简单(小)依赖文件的定制依赖解析 ant 任务,同时将每个项目定义为 applib(您应该只依赖于 lib;永远不要依赖 app)。它工作得很好。

我们还有 ant 任务来修改我们的 eclipse .classpath 和 IDEA .iml 文件,为我们的 IDE 生成依赖关系图。

关于java - 平台强制版本控制机制是 Java 最需要的特性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/571616/

有关java - 平台强制版本控制机制是 Java 最需要的特性吗?的更多相关文章

  1. ruby - 我需要将 Bundler 本身添加到 Gemfile 中吗? - 2

    当我使用Bundler时,是否需要在我的Gemfile中将其列为依赖项?毕竟,我的代码中有些地方需要它。例如,当我进行Bundler设置时:require"bundler/setup" 最佳答案 没有。您可以尝试,但首先您必须用鞋带将自己抬离地面。 关于ruby-我需要将Bundler本身添加到Gemfile中吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4758609/

  2. ruby - rspec 需要 .rspec 文件中的 spec_helper - 2

    我注意到像bundler这样的项目在每个specfile中执行requirespec_helper我还注意到rspec使用选项--require,它允许您在引导rspec时要求一个文件。您还可以将其添加到.rspec文件中,因此只要您运行不带参数的rspec就会添加它。使用上述方法有什么缺点可以解释为什么像bundler这样的项目选择在每个规范文件中都需要spec_helper吗? 最佳答案 我不在Bundler上工作,所以我不能直接谈论他们的做法。并非所有项目都checkin.rspec文件。原因是这个文件,通常按照当前的惯例,只

  3. Ruby Readline 在向上箭头上使控制台崩溃 - 2

    当我在Rails控制台中按向上或向左箭头时,出现此错误:irb(main):001:0>/Users/me/.rvm/gems/ruby-2.0.0-p247/gems/rb-readline-0.4.2/lib/rbreadline.rb:4269:in`blockin_rl_dispatch_subseq':invalidbytesequenceinUTF-8(ArgumentError)我使用rvm来管理我的ruby​​安装。我正在使用=>ruby-2.0.0-p247[x86_64]我使用bundle来管理我的gem,并且我有rb-readline(0.4.2)(人们推荐的最少

  4. 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服务器更新战俘

  5. ruby - 如何在 Lion 上安装 Xcode 4.6,需要用 RVM 升级 ruby - 2

    我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121

  6. 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/

  7. ruby-on-rails - 带 Spring 锁的 Rails 4 控制台 - 2

    我正在使用Ruby2.1.1和Rails4.1.0.rc1。当执行railsc时,它被锁定了。使用Ctrl-C停止,我得到以下错误日志:~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`gets':Interruptfrom~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`verify_server_version'from~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.

  8. 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之间的所有版本,你可以这

  9. ruby-on-rails - openshift 上的 rails 控制台 - 2

    我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新ruby​​gems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems

  10. 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了,所以充其量只能让更

随机推荐