pom xml中的依赖和插件标签之间maven有什么区别?

我不熟悉Maven工具,我已经用Spring和Hibernate做了一个项目,并且在pom.xml中将它们configuration为插件,但是JUnit被标记为依赖项。 我的问题是作为一个插件和一个依赖关系背后的逻辑是什么?

插件和依赖项都是Jar文件。

但是他们之间的区别是,maven的大部分工作都是使用插件完成的, 而依赖关系只是一个Jar文件,在执行任务时会被添加到类path中。

例如,您使用编译器插件来编译java文件。 您不能使用编译器插件作为依赖项,因为它只会将插件添加到类path中,并且不会触发任何编译。 在编译文件时要添加到类path中的Jar文件将被指定为依赖项。

你的情况也一样。 你必须使用spring-plugin来执行一些spring可执行文件[我不确定使用了什么spring-plugins。 我只是在这里猜测]。 但是你需要依赖来执行这些可执行文件。 Junit在依赖项下被标记,因为它被surefire插件用来执行unit testing。

所以,我们可以说,plugin是一个执行任务的Jar文件,依赖是一个提供类文件来执行任务的Jar。

希望这能回答你的问题!

Maven本身可以被描述为食物处理器,它有许多不同的单位,可以用来完成不同的任务。 这些单位被称为插件。 例如,编译你的项目maven使用maven-compiler-plugin ,运行testingmaven-surefire-plugin等等。

maven方面的依赖是你的项目依赖的一个包装类。 它可以是jar,war等。例如,如果你想能够编写JUnittesting,你将不得不使用JUnit注解和类,因此你必须声明你的项目依赖于JUnit。

如果你来自像我这样的前端背景,并且熟悉Grunt和npm,可以这样想:

首先,你可以运行npm install grunt-contrib-copy --save-dev 。 这就像maven的<dependency></dependency> 。 它下载执行构build任务所需的文件。

然后你将在Gruntfile.js中configuration任务

 copy: { main: { src: 'src/*', dest: 'dest/', }, } 

这就像maven的<plugin>/<plugin> 。 您正在告诉构build工具如何处理由npm / <dependency></dependency>下载的代码。

当然这不是一个确切的比喻,但足够接近,以帮助包围你的头。

插件用于向Maven本身添加function(例如添加eclipse支持或对Maven等的SpringBoot支持)。 源代码需要依赖性来传递任何Maven阶段(例如compiletest )。 在JUnit情况下,因为testing代码基本上是代码库的一部分,您可以在testing套件中调用JUnit特定命令,而这些命令不是由Java SDK提供的,因此在Maven处于testing阶段时, JUnit必须存在,这是通过在您的pom.xml文件中提到JUnit作为依赖来处理。