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阶段(例如compile
或test
)。 在JUnit
情况下,因为testing代码基本上是代码库的一部分,您可以在testing套件中调用JUnit
特定命令,而这些命令不是由Java SDK
提供的,因此在Maven
处于testing阶段时, JUnit
必须存在,这是通过在您的pom.xml
文件中提到JUnit
作为依赖来处理。