使用"mvn install“命令和使用jar:jar插件有什么不同?
很明显,"install“似乎构建了一个jar,因此,我想知道对jar:jar插件的需求是什么。
发布于 2013-01-15 07:03:27
mvn install命令将“执行”maven lifecycle直到安装阶段。这意味着将执行之前的所有阶段(包括包阶段)。
在一个简单的maven jar项目中,包阶段被绑定到maven-jar-plugin。因此,执行mvn install将在某个时刻执行jar:jar。
发布于 2013-01-15 06:55:27
您可以在maven命令行上指定两种类型的内容:
:插件目标(这些阶段至少包括一个:字符,具体取决于您指定插件的完整程度,它可以是short-name:goal、groupId:artifactId:goal或groupId:artifactId:version:goal)有three lifecycles:default、clean和site。每个生命周期由一系列阶段组成。当您在生命周期中指定一个阶段时,Maven将按顺序执行该生命周期中的所有阶段,直到并包括指定的阶段。
当您指定一个插件目标时,将调用该插件目标,并且仅调用该插件目标。
Maven有一个打包的概念,它定义了生命周期阶段的default set of plugin bindings。例如,默认情况下,jar打包(除非pom.xml包含<packaging>...</packaging>元素,否则为默认打包)将jar:jar绑定到package阶段,并将install:install绑定到install阶段。
所以当你键入
$ mvn packageMaven将在整个生命周期阶段运行,同时执行绑定的插件(要么来自生命周期,要么在pom中指定插件执行)。
当你输入的时候
$ mvn jar:jarMaven将只运行jar插件的jar目标。
它的生命周期是你想要使用的100次中的99次。
以下是您通常希望直接调用插件目标的情况
jetty:run启动the应用程序serversurefire:test快速重新运行测试(通常使用-Dtest=...指定发布codeversions:...的特定onerelease:prepare release:perform执行一些版本相关内容的更新或查询,例如,使用versions:display-plugin-updatesship:ship或cargo:deployer-deploy将构建的构件推送(运送)到托管环境发布于 2013-01-15 06:46:56
install将工件放在本地(在您的机器上) maven存储库中,而jar:jar不会。如果您在一个库上调用jar:jar,然后尝试在另一个项目中引用该库,它将不在您的本地存储库中。
还要注意,与使用jar:jar相比,mvn package是一种更干净的打包方式。
https://stackoverflow.com/questions/14328183
复制相似问题