2012-08-09 78 views

回答

110

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

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

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

同样适用于您的场景。你必须使用spring-plugin来执行一些spring可执行文件[我不确定使用了哪些spring-plugins。我只是在这里猜测]。但是你需要依赖来执行这些可执行文件。 Junit在依赖项下被标记,因为它被surefire插件用于执行单元测试。

因此,我们可以说,插件是执行任务的JAR文件,和依赖是它提供的类文件,执行该任务的罐子。

希望能回答你的问题!

+0

感谢您的解释,现在我知道了明确的:) – Soumyaansh 2012-08-13 04:43:45

+1

尼斯解释。 – bugCracker 2014-10-14 13:28:49

+0

我能否告诉我执行阶段和目标之间有什么不同?因为我知道这个阶段正在讨论maven的生命周期......但是为什么又要进入目标?任何提示?有时候我看到人们把生命周期关键字放在了目标...... ??? (?。?) – taymedee 2015-01-04 13:52:02

28

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

maven的依赖关系是你的项目依赖的类的一个打包块。例如,如果您希望能够编写JUnit测试,则必须使用JUnit注释和类,因此您必须声明您的项目依赖于JUnit。

+0

感谢您的快速回复,抱歉,但我仍然很困惑,我知道JUnit的也是一个框架和(休眠,弹簧)还附带下框架而已,所以在情况下,这意味着(休眠,弹簧),也可配置在依赖标签?我希望你有我的问题。 – Soumyaansh 2012-08-09 11:24:43

+0

是的,据我所知,Spring Maven插件没有这样的东西。通常,Spring库(或Hibernate或JUnit或TestNG等)被声明为项目的依赖项。如果你是新的Maven时,我建议你阅读[这](http://www.sonatype.com/books/mvnref-book/reference/)很不错的书。 – 2012-08-09 11:45:14

+0

感谢您的链接,我一定会通过它! – Soumyaansh 2012-08-13 04:45:46

3

插件是用于添加功能,以Maven本身(如添加eclipse支持或MavenSpringBoot支持等)。源代码需要依赖性来通过任何Maven阶段(例如,compiletest)。在JUnit的情况下,因为测试代码基本上是您的代码库的一部分,并且您在测试套件内部调用JUnit特定命令,并且这些命令不由Java SDK提供,因此JUnit必须存在于Maven处于测试阶段并且已处理通过在您的pom.xml文件中提及JUnit作为依赖关系。

3

如果你从前端的背景和我一样到来,并熟悉步兵和NPM,认为它是这样的:

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

,那么你会配置任务Gruntfile.js

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

这就好比Maven的<plugin>/<plugin>。您正在告诉构建工具如何处理由npm/<dependency></dependency>下载的代码。

当然,这不是一个确切的比喻,但足以帮助你的包裹头部周围。

相关问题