本文正在参加「Java主题月 – Java Debug笔记活动」,详情查看 活动链接
Q:
mvn clean package
和 mvn clean install
之间到底有什么区别?当我运行这两个命令时,它们似乎都在做相同的事情。
A:
好吧,两个都会进行clean操作。这意味着他们将删除目标文件夹。真正的问题是打包和安装之间有什么区别?
package 将编译您的代码并将其打包。例如,如果您的pom表示该项目是jar,则在打包时将其创建为您的jar,并将其放置在目标目录中的某个位置(默认情况下)。
install将进行编译和打包,但也会将该包放入您的本地存储库中。这样可以使其他项目可以引用它,并从本地存储库中获取它。
Other
#176
clean的功能(在两个命令中都通用)-删除由先前版本生成的所有文件
谈到命令 package 和 install 之间的差异,您首先需要了解maven项目的生命周期
这些是Maven中的默认生命周期阶段:
- validate – 验证项目是否正确并且所有必要的信息均可用
- compile – 编译项目的源代码
- test – 使用合适的单元测试框架来测试编译后的源代码。这些测试不应要求将代码打包或部署
- package – 获取编译后的代码,并将其打包为可分发的格式,例如JAR。
- verify – 对集成测试的结果进行任何检查,以确保符合质量标准
- install – 将软件包安装到本地存储库中,以作为本地其他项目中的依赖项
- deploy – 在构建环境中完成后,将最终程序包复制到远程存储库,以便与其他开发人员和项目共享。
Maven的工作方式是,如果您在生命周期的任何一个阶段运行命令,它都会在执行命令本身之前按顺序执行每个默认生命周期阶段。
执行顺序:
validate >> compile >> test (optional) >> package >> verify >> install >> deploy
复制代码
因此,当您运行命令mvn package时,它将运行所有生命周期阶段的命令,直到package
validate >> compile >> test (optional) >> package
复制代码
至于mvn install,它会在安装之前一直运行所有生命周期阶段的命令,其中还包括package
validate >> compile >> test (optional) >> package >> verify >> install
复制代码
因此,实际上,它的意思是,install命令完成了package命令所做的所有工作,甚至更多(将软件包安装到本地存储库中,以作为本地其他项目的依赖项)
[参考文档](Maven lifecycle reference)
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END