4

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

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

4

3 回答 3

18

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

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

  • 插件目标(这些包括至少一个:字符,取决于您对插件的指定程度,可能是short-name:goalgroupId:artifactId:goalgroupId:artifactId:version:goal

共有三个生命周期:默认、干净和站点。每个生命周期都由一系列阶段组成。当您在生命周期中指定一个阶段时,Maven 将按该生命周期中的所有阶段的顺序执行,直到并包括指定的阶段。

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

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

所以当你输入

$ mvn package

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

当您键入

$ mvn jar:jar

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

生命周期是您想要使用的 100 次中的 99 次。

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

  • jetty:run启动 webapp 服务器

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

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

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

  • ship:shipcargo:deployer-deploy将您构建的工件推送(运送)到托管环境

于 2013-01-14T22:55:26.700 回答
2

install将工件放在您的本地(在您的机器上)maven 存储库中,jar:jar而不是。如果您调用jar:jar一个库,然后尝试在另一个项目中引用该库,它将不在您的本地存储库中。

另请注意,这mvn package是一种更清洁的包装方式,而不是使用jar:jar.

于 2013-01-14T22:46:55.703 回答
2

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

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

于 2013-01-14T23:03:26.710 回答