mvn clean package
和mvn clean install
之间究竟有什么区别?当我运行这两个命令时,它们似乎都做同样的事情。
答案 0 :(得分:273)
嗯,两者都会干净。这意味着他们将删除目标文件夹。真正的问题是包和安装之间的区别是什么?
package
将编译您的代码并将其打包。例如,如果您的pom说该项目是一个jar,它将在您打包并将其放在目标目录中的某个位置时为您创建一个jar(默认情况下)。
install
将编译和打包,但它也会将包放在本地存储库中。这将使其他项目可以引用它并从本地存储库中获取它。
答案 1 :(得分:15)
包将根据POM文件生成Jar / war。 安装会将生成的jar文件安装到本地存储库以获取其他依赖项(如果有)。
在包阶段之后安装阶段
答案 2 :(得分:11)
执行清理操作(在两个命令中都常见)-删除由先前构建生成的所有文件
谈到命令 package 和 install 之间的区别,您首先需要了解maven项目的 生命周期 < / strong>
这是Maven中默认的生命周期阶段
Maven的工作原理是,如果您在生命周期的任何阶段运行命令,它都会在执行命令本身之前按顺序执行每个默认生命周期阶段。
执行顺序
验证>>编译>>测试(可选)>>包>>验证>>安装>>部署
因此,当您运行命令 mvn软件包 时,它将运行所有生命周期阶段的命令,直到软件包
验证>>编译>>测试(可选)>>程序包
,对于 mvn install ,它将运行所有生命周期阶段的命令,直到安装为止,其中还包括软件包
验证>>编译>>测试(可选)>>包>>验证>>安装
因此,实际上, install 命令的作用是执行 package 命令所做的所有工作,以及执行其他操作(将软件包安装到本地存储库中,以作为依赖项使用)在本地的其他项目中
答案 3 :(得分:9)
包装&amp;安装是maven构建生命周期中的各个阶段。包装阶段将在此之前执行所有阶段。它将停止将项目打包为jar。类似地,安装阶段将执行所有先前阶段&amp;最后在本地为其他依赖项目安装项目。
要了解maven构建生命周期,请浏览以下链接aggregate initialization here
答案 4 :(得分:3)
package
会将打包的jar
或war
添加到您的target
文件夹中,我们可以检查何时清空目标文件夹(使用mvn clean
)然后运行mvn package
。
install
将完成package
的所有工作,此外,还将在本地存储库中添加打包的jar
或war
。我们可以通过签入您的.m2
文件夹进行确认。