Java Maven依赖关系管理的好处
我不确定我是否真的理解Maven最强大的特性—依赖关系管理 在开发项目时,我需要在编写代码时添加所有依赖项。因此,在使用Maven构建项目时,我已经下载了所有依赖项Java Maven依赖关系管理的好处,java,maven,continuous-integration,Java,Maven,Continuous Integration,我不确定我是否真的理解Maven最强大的特性—依赖关系管理 在开发项目时,我需要在编写代码时添加所有依赖项。因此,在使用Maven构建项目时,我已经下载了所有依赖项 那么依赖项管理的意义是什么呢?多亏了Maven,例如,您不需要下载依赖项并将其放入Tomcat上的lib。它是由maven自动完成的。您可以直接在pom.xml文件中查看所有依赖项以及其他设置 依赖关系管理只是Maven的主要功能之一。我认为您应该问问自己,什么是附加任务(外部lib、部署、文档等)您正在项目中执行,看看Maven是
那么依赖项管理的意义是什么呢?多亏了
Maven
,例如,您不需要下载依赖项并将其放入Tomcat
上的lib
。它是由maven自动完成的。您可以直接在pom.xml
文件中查看所有依赖项以及其他设置
依赖关系管理只是
Maven
的主要功能之一。我认为您应该问问自己,什么是附加任务(外部lib、部署、文档等)您正在项目中执行,看看Maven是否可以通过其插件帮助您完成这些任务。假设您已经下载了所有必要的JAR并保存在库中。现在,您希望将代码移动到许多机器中。
因此,现在您必须将所有文件传输到另一台机器
如果您在发送时错过了一些jar,或者说将来您想要更新版本的jar,那么您是否希望将其发送到jar中的所有机器,并从lib中删除旧版本,或者编写一个配置,一次完成所有操作
一旦项目变得更大,您将感受到Maven的真正本质。它只是pom.xml您需要注意所有jar管理。Maven的依赖关系管理在您处理多个项目、跨多个开发机器和多个开发的环境中最有意义。 想象一下最简单的场景:
Project_1
\lib
\log4j.jar
Project_2
\lib
\log4j.jar
Project_3
\lib
\log4j.jar
在开发过程中,您需要将log4j.jar文件复制粘贴到所有这些项目中,这将转换为本地和任何可能使用的SCM上使用的额外磁盘空间,并且需要进入每个项目并将其定义为库(将其添加到类路径)。如果要更改jar的版本,需要重复该过程。
如果你使用Maven,你需要做的就是
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>COM.MY.COMPANY</groupId>
<artifactId>NAME_OF_PROJECT</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
4.0.0
我的公司
如果没有这个功能,你会怎么做?@Seelenvirtuose你的意思是我们需要它仅仅是因为当我们使用Maven构建时,我们无法以某种方式向依赖项添加路径,因此Maven只需要它们,这样它就可以自己完成构建工作了吗?不。我的意思是:如果你没有依赖项管理工具,你会如何处理依赖项(库)你的项目已经完成了吗?想一想。考虑几个可能有一些共同点的项目。现在考虑将项目放入源库(Git,Svn,…),以便其他开发人员也可以使用它。考虑到所有这些,一个只声明依赖项的机制(顺便说一句,它是文本)和一个神奇的工具是一个好方法。@sellenvirouse,您使用Maven下载所有库,并将它们下载的目录添加到您的类路径?您希望每次都将jar文件推送到git repo,并在克隆/签出时下载它们吗?好的,但是如果没有首先安装的依赖项,我无法开始编码。在开始编写代码之前,您是否首先运行maven来下载它们?好的,但是在maven在其默认目录中下载依赖项之后,例如,如何使用它们从IDE运行项目?我需要将目录添加到我的类路径中吗?不,默认情况下,它将以Maven Dependencies的名称添加到Java BuildPath中。创建一个示例应用程序并尝试。如果您的IDE是
Eclipse
,那么您需要将此项目创建为Maven项目,Eclipse
将自动读取您的pom.xml
文件并下载依赖项。您还需要注意项目的性质:jar、war等,但是您仍然需要更改每个项目中的pom.xml,对吗?它总是有意义的。不管你是否独自工作……它在处理依赖关系等许多方面都有帮助。我在任何地方都有意义,至少在实践中是如此。我甚至将其用于概念验证项目。自从你建立了回购协议(在你的mavent设置中),创建一个新的项目是一个错误。让我编辑我的答案。@CuriosityGuy:是的,您必须维护pom,它是一个模块描述符。通用属性和依赖项可以在超级pom(父级)中引用。无论从哪个角度看,你都需要依赖管理,maven或ant和ivy。但是对于maven,它是开箱即用的,并且支持ant脚本