mvn install vs jar:jar

jay*_*100 4 java install jar build maven

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

很明显,"安装"似乎构建了一个jar,所以,我想知道jar:jar插件需要什么.

Ste*_*lly 16

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

  • 生命周期阶段(这些不包括:角色)

  • 插件的目标(其中包括至少一个:字符,这取决于你如何充分指定的插件,它可以是short-name:goalgroupId:artifactId:goalgroupId:artifactId:version:goal)

三个生命周期:默认,清理和站点.每个生命周期都包含一系列阶段.当您在生命周期中指定阶段时,Maven将按顺序执行该生命周期中的所有阶段,包括指定的阶段.

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

Maven有一个包装概念,它定义了一组默认的插件绑定到生命周期阶段.例如,jar默认情况下,包装(默认情况下除非您pom.xml包含<packaging>...</packaging>元素)绑定jar:jarpackage阶段并绑定install:installinstall阶段.

所以当你打字

$ mvn package
Run Code Online (Sandbox Code Playgroud)

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

当你输入

$ mvn jar:jar
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • jetty:run 启动一个webapp服务器

  • surefire:test快速重新运行测试(通常-Dtest=...用于指定特定的测试

  • release:prepare release:perform 发布你的代码

  • versions:... 做一些更新或查询版本相关的东西,例如 versions:display-plugin-updates

  • ship:ship或者cargo:deployer-deploy将您构建的工件推送(发送)到托管环境