“mvn install”命令与使用 jar:jar 插件有什么区别?
很明显,“安装”似乎构建了一个 jar,因此,我想知道 jar:jar 插件的需求是什么。
“mvn install”命令与使用 jar:jar 插件有什么区别?
很明显,“安装”似乎构建了一个 jar,因此,我想知道 jar:jar 插件的需求是什么。
您可以在 maven 命令行上指定两种类型的内容:
生命周期阶段(这些不包括:
字符)
插件目标(这些包括至少一个:
字符,取决于您对插件的指定程度,可能是short-name:goal
或groupId:artifactId:goal
或groupId:artifactId:version:goal
)
共有三个生命周期:默认、干净和站点。每个生命周期都由一系列阶段组成。当您在生命周期中指定一个阶段时,Maven 将按该生命周期中的所有阶段的顺序执行,直到并包括指定的阶段。
当您指定插件目标时,将调用该插件目标并且仅调用该插件目标。
Maven 有一个包装的概念,它定义了一组默认的插件绑定到生命周期阶段。例如jar
,默认情况下包装(除非您pom.xml
包含<packaging>...</packaging>
元素,否则默认情况下)绑定jar:jar
到package
阶段并绑定install:install
到install
阶段。
所以当你输入
$ 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:ship
或cargo:deployer-deploy
将您构建的工件推送(运送)到托管环境
install
将工件放在您的本地(在您的机器上)maven 存储库中,jar:jar
而不是。如果您调用jar:jar
一个库,然后尝试在另一个项目中引用该库,它将不在您的本地存储库中。
另请注意,这mvn package
是一种更清洁的包装方式,而不是使用jar:jar
.
mvn install
命令将“执行” maven 生命周期直到安装阶段。这意味着将执行所有先前的阶段(包括打包阶段)。
在一个简单的 maven jar 项目中,包阶段绑定到 maven-jar-plugin。所以执行mvn install
将在某个时候执行jar:jar
。