2013-05-17 167 views
114

mvn clean packagemvn clean install之间的区别究竟是什么?当我运行这两个命令时,它们似乎都做了同样的事情。“mvn clean package”和“mvn clean install”有何不同?

+7

请看[简介构建生命周期 - 生命周期参考(http://maven.apache.org/guides/introduction/introduction-to-the -lifecycle.html#Lifecycle_Reference)并查找'package'和'install'。 –

+0

一个包(在目标中构建它)和安装(包并将它放入您的存储库)如果您想在另一个模块中使用此版本,则需要稍后执行。 –

+2

也许这应该重新打开?这是完全可能的答案,我不觉得难以回答。另外,如果某个人对maven来说是全新的,那么很容易看出这两个阶段如何表现出同样的效果。我会编辑它,试图使它不那么模糊。 –

回答

172

好吧,两者都会干净。这意味着他们将删除目标文件夹。真正的问题是软件包和安装有什么区别?

package将编译您的代码并将其打包。例如,如果您的pom说该项目是一个jar文件,它将在您打包并将其放置在目标目录中的某个位置时(默认情况下)为您创建一个jar文件。

install将进行编译和打包,但它也会将软件包放入本地存储库。这将使其他项目可以引用它并从本地存储库中获取它。

Documentation

+0

为什么mvn的安装速度比mvn包快? –

+0

@SharadHolani因为构建是增量式的。 'mvn clean install'不会比'mvn package'更快。 – OrangeDog

+0

对于我的项目,mvn包装程序集:单个构建fat jar的时间比mvn安装时间长。 包装和安装两个建立等效的脂肪罐? –

7

包&安装在Maven构建生命周期的各个阶段。包装阶段将执行之前的所有阶段&它将停止并将项目打包为瓶子。同样,安装阶段将执行所有先前阶段&最后在本地为其他相关项目安装项目。

对于理解Maven构建生命周期请到通过以下链接https://ayolajayamaha.blogspot.in/2014/05/difference-between-mvn-clean-install.html

+0

你是什么意思“&最后在其他相关项目本地安装项目” –

2

将生成JAR /战争为每POM文件。 安装会将生成的jar文件安装到本地存储库以供其他依赖关系使用(如果有的话)。

安装阶段来后阶段

+2

我认为你的意思是'安装'阶段来_after_'包'阶段 – Attila

+0

第一个包装将发生那些包(jar/war)将安装。 –

+0

“安装阶段_相关程序包阶段”。它目前的措辞是倒退的。 “之后”是指“之后”。 –

相关问题