mvn clean package
和之间究竟有什么区别mvn clean install
?当我运行这两个命令时,它们似乎都在做同样的事情。
6 回答
好吧,两者都会清洁。这意味着他们将删除目标文件夹。真正的问题是打包和安装之间有什么区别?
package
将编译您的代码并将其打包。例如,如果你的 pom 说项目是一个 jar,它会在你打包时为你创建一个 jar,并将它放在目标目录的某个位置(默认情况下)。
install
将编译和打包,但它也会将包放在本地存储库中。这将使其他项目可以引用它并从您的本地存储库中获取它。
clean 的作用(在两个命令中都很常见) - 删除之前构建生成的所有文件
谈到命令package和install之间的区别,您首先需要了解maven 项目的生命周期
这些是 Maven 中的默认生命周期阶段
- 验证- 验证项目是否正确并且所有必要的信息都可用
- compile - 编译项目的源代码
- 测试- 使用合适的单元测试框架测试编译的源代码。这些测试不应该要求打包或部署代码
- package - 获取编译后的代码并将其打包成可分发的格式,例如 JAR。
- 验证- 对集成测试的结果进行任何检查,以确保满足质量标准
- install - 将包安装到本地存储库中,作为本地其他项目的依赖项
- deploy - 在构建环境中完成,将最终包复制到远程存储库以与其他开发人员和项目共享。
Maven 的工作原理是,如果您为任何生命周期阶段运行命令,它会在执行命令本身之前按顺序执行每个默认生命周期阶段。
执行顺序
验证>>编译>>测试(可选)>>包>>验证>>安装>>部署
因此,当您运行命令mvn package时,它会运行所有生命周期阶段的命令,直到 package
验证 >> 编译 >> 测试(可选) >> 包
至于mvn install,它运行所有生命周期阶段的命令,直到安装,其中还包括包
验证 >> 编译 >> 测试(可选) >> 包 >> 验证 >> 安装
因此,实际上它的意思是,安装命令执行包命令所做的所有事情以及更多(将包安装到本地存储库中,以用作本地其他项目的依赖项)
来源:Maven 生命周期参考
包将根据 POM 文件生成 Jar/war。 install会将生成的 jar 文件安装到本地存储库以获取其他依赖项(如果有)。
安装阶段在包阶段之后
package
将打包的jar
或添加war
到您的 target
文件夹中,我们可以检查它,我们清空目标文件夹(使用 mvn clean
)然后运行mvn package
。
install
将做所有的事情package
,此外它还将添加打包jar
或war
在本地存储库中。我们可以通过检查您的.m2
文件夹来确认。
打包和安装是 Maven 构建生命周期中的各个阶段。package 阶段将在此之前执行所有阶段,它将停止将项目打包为 jar。同样,安装阶段将执行所有先前的阶段并最终在本地为其他依赖项目安装项目。
要了解 maven 构建生命周期,请通过以下链接https://ayolajayamaha.blogspot.in/2014/05/difference-between-mvn-clean-install.html
mvn package 命令将编译源代码并根据 pom 文件将其打包为 jar 或 war 并将其放入目标文件夹(默认情况下)。
mvn install 命令将编译和打包,但它也会将包放在本地存储库中。以便其他项目可以引用它并从您的本地存储库中获取它。
mvn install 命令主要用于编译存储库中其他项目所依赖的项目(库)时。