“mvn install”命令与jar:jar插件的使用有什么区别?
很明显“安装”似乎构建了一个jar,因此,我想知道jar:jar插件需要什么。
答案 0 :(得分:16)
您可以在maven命令行中指定两种类型的东西:
生命周期阶段(这些阶段不包含:
个字符)
插件目标(包括至少一个:
个字符,具体取决于您指定插件的完整程度,可以是short-name:goal
或groupId:artifactId:goal
或groupId: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-updates
或ship: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
执行。