如何在Java中要求依赖关系?
我习惯于使用composer、npm和bower等工具,在这些工具中,我需要来自集中存储库的依赖项。(ruby有bundler,python有pip。) 不过,目前我正在处理jar文件,设置它们的过程似乎有些不协调。我必须下载它们,在项目中设置它们(我使用IntelliJ IDEA,但它类似于eclipse或netbeans) 我正在寻找一种方式,只说“需要库x在版本y”,并有命令来安装和更新它们 似乎maven或gradle做了一些工作,但我有点困惑,因为他们被描述为构建工具 我不想构建我的应用程序,我只是简化了依赖关系管理,这样就不会依赖于一些未加载的jar文件 是否存在这样一个集中式存储库?事实上的标准是什么?(大多数人都使用,即作曲家已经淘汰了pear)我将如何设置它如何在Java中要求依赖关系?,java,maven,gradle,dependency-management,Java,Maven,Gradle,Dependency Management,我习惯于使用composer、npm和bower等工具,在这些工具中,我需要来自集中存储库的依赖项。(ruby有bundler,python有pip。) 不过,目前我正在处理jar文件,设置它们的过程似乎有些不协调。我必须下载它们,在项目中设置它们(我使用IntelliJ IDEA,但它类似于eclipse或netbeans) 我正在寻找一种方式,只说“需要库x在版本y”,并有命令来安装和更新它们 似乎maven或gradle做了一些工作,但我有点困惑,因为他们被描述为构建工具 我不想构建我的应
什么更适合管理依赖关系?我将如何管理依赖关系?是的,有这样一个集中式存储库(Maven Central)。使用 ApacheMaven是一个软件项目管理和理解工具。 基于项目对象模型(POM)的概念,Maven可以管理 一个项目的构建、报告和文档是由一个 信息
马文就是这么做的。它是一个完整的构建工具,依赖关系管理是其中的一部分。maven使用一个中央存储库,您可以拥有自己的存储库,也可以使用任何回购协议 我不想构建我的应用程序,我只是简化了依赖关系管理,这样就不会依赖于一些未加载的jar文件 最终,您还是希望构建应用程序,那么为什么不使用支持依赖关系管理的构建系统呢?也有纯粹的依赖关系管理器(例如ApacheIvy),但是为什么不使用一个成熟的构建工具来简化集成呢 是否存在这样一个集中式存储库?事实上的标准是什么?(大多数人都使用,即作曲家已经淘汰了pear)我将如何设置它 有几个集中式存储库,其中最常见的是 什么更适合管理依赖关系?我将如何做到这一点
您可以使用任何适合您的需要并支持此功能的构建工具。其中3个是Maven、ApacheIvy和Gradle。只需选择一个并阅读其文档。让我们从一个简单的问题开始:是的,有一个中央存储库,在那里(几乎)可以找到所有东西: 除此之外,有些公司还拥有自己的存储库。比如说 如果你想自己托管一些开源软件,还有一个问题 respository是一个简单的文件结构,其中包含jar文件和一些xml元数据。布局来自maven世界,但几乎所有java构建系统都有从maven central检索工件的方法 整个依赖关系解析与您从npm中了解到的有点不同。在这里,您所依赖的每个包都有自己的依赖项。其中一些可能会发生冲突。在java世界中,需要匹配这些可传递的依赖项—需要识别一个公共版本。这通常由构建系统完成。因此,您的“require”是一个依赖项,这意味着jar将在类路径中结束,因此这些类将可用于您的代码。这个过程中没有现成的动态(在启动jvm后将JAR添加到类路径中) 依赖项在pom.xml(如果使用maven)build.gradle文件(如果使用gradle)中配置。还有sbt或常春藤+蚂蚁 通常,您的工件解析系统也会运行构建。这很有意义,因为您需要定义类路径来编译java源代码。如果您只是使用这些工具来复制jar文件,那么您仍然需要找到一种方法将所有这些文件传递到编译器中。这在第三次依赖之后很无聊 Maven来自convention over configuration部分。看。Intellij集成非常好 Gradle使用Groovy(一种基于java vm的脚本语言)来实现类似的目标,但对发生的事情更加开放。但这使得在和IDE中的集成更加困难——这取决于您对构建的创造性。这是一个很好的起点 还有蚂蚁+常春藤。Ant是一个简单的构建系统,您可以在其中定义任务。Ivy为其添加了依赖解析 不要忘记:sbt(主要来自Scala世界)或leiningen(主要是clojure)——所有基于JVM的语言 我的建议是maven—它需要一个简单的pom.xml,您可以在其中添加依赖项—如果您遵循它的目录结构约定,编译将开箱即用—这在java世界中非常常见。大多数IDE都能正常工作。如果您的构建需要更复杂的构建步骤,gradle有一个很好的迁移路径
上面5分钟的教程使用原型(maven中的项目模板)让您开始学习。如果您已经这样做了,您应该能够在IntelliJ中打开该文件夹并从那里继续。这个问题要么太宽,要么是寻找外部指针(文档、教程)或基于意见(您甚至可以只使用Ivy而不是maven),在这三种情况中的任何一种情况下,都符合与javascript相反的Closure条件,您需要编译和构建Java应用程序,这是将构建和依赖关系管理放在同一个工具中的一个很好的理由。而且与大多数IDE的集成是好的(或者足够好),所以它甚至不会成为阻碍。