mvn install vs jar:jar

时间:2013-01-14 22:45:23

标签: java maven build jar install

“mvn install”命令与jar:jar插件的使用有什么区别?

很明显“安装”似乎构建了一个jar,因此,我想知道jar:jar插件需要什么。

3 个答案:

答案 0 :(得分:16)

您可以在maven命令行中指定两种类型的东西:

  • 生命周期阶段(这些阶段不包含:个字符)

  • 插件目标(包括至少一个:个字符,具体取决于您指定插件的完整程度,可以是short-name:goalgroupId:artifactId:goalgroupId:artifactId:version:goal

three lifecycles:默认,清洁和网站。每个生命周期都包含一系列阶段。当您在生命周期中指定阶段时,Maven将按顺序执行该生命周期中的所有阶段,直至并包括指定的阶段。

当您指定插件目标时,将调用该插件目标并仅调用该插件目标。

Maven有一个打包的概念,它定义了default set of plugin bindings到生命周期阶段。例如jar打包(默认情况下除非pom.xml包含<packaging>...</packaging>元素),默认情况下会将jar:jar绑定到package阶段并绑定{{1到install:install阶段。

所以当你输入

install

Maven将在生命周期阶段一直运行,执行绑定的插件(从生命周期或通过在pom中指定插件执行)。

键入

$ mvn package

Maven将只运行jar插件的jar目标。

生命周期是您想要使用的生命周期的100倍。

以下是您通常希望直接调用插件目标的时间

  • $ mvn jar:jar 启动webapp服务器

  • jetty:run快速重新运行测试(通常使用surefire:test指定特定的

  • -Dtest=...发布您的代码

  • release:prepare release:perform对版本相关内容进行更新或查询,例如versions:...

  • versions:display-plugin-updatesship:ship将您构建的工件推送(发送)到托管环境

答案 1 :(得分:2)

install将工件放在您的本地(在您的计算机上)maven存储库中,jar:jar没有。如果您在库上调用jar:jar,那么尝试在另一个项目中引用该库,它将不在您的本地存储库中。

另请注意,mvn package是一种更干净的打包方式,而非使用jar:jar

答案 2 :(得分:2)

mvn install命令将“执行”maven lifecycle直到 install 阶段。 这意味着将执行所有先前的阶段(包括阶段)。

在一个简单的maven jar项目中,包阶段绑定到maven-jar-plugin。因此执行mvn install将在某个时间jar:jar执行。