clean 和 install 是两个独立的生命周期,只不过默认情况下 install 之前的那些步骤或插件和 clean 是一样的(就是你所谓的 install 会把之前流程走一遍)。但这个行为你是可以在 pom.xml 去修改的,这就导致了 clean 和 install 可能会有不同的执行流程。再一点是 install 里前面执行的那些步骤,会有一些默认的行为。以 package 为例,其实内部有一些逻辑判断是否需要重新打包,对于某些特定条件它就会跳过该步骤、以加快速度,比如它会对比文件修改时间。但如果你的有多台机器存在时间不一致的问题、或是你有某个私包仓库允许重复上传同版本的包,就会导致这里判断失误、明明代码有变化却不能重新打包。而 clean 的话就会确保一定会重新打包(因为上一次的结果被删掉了嘛)。事实上如果你能完整了解二者的执行流程并能确认不需要 clean 的话确实只执行 install 就可以了,并不说非得先 clean 再 install,这只是一种缩小构建错误范围的一种方式。
clean 和 install 是两个独立的生命周期,只不过默认情况下 install 之前的那些步骤或插件和 clean 是一样的(就是你所谓的 install 会把之前流程走一遍)。但这个行为你是可以在 pom.xml 去修改的,这就导致了 clean 和 install 可能会有不同的执行流程。
再一点是 install 里前面执行的那些步骤,会有一些默认的行为。以 package 为例,其实内部有一些逻辑判断是否需要重新打包,对于某些特定条件它就会跳过该步骤、以加快速度,比如它会对比文件修改时间。但如果你的有多台机器存在时间不一致的问题、或是你有某个私包仓库允许重复上传同版本的包,就会导致这里判断失误、明明代码有变化却不能重新打包。而 clean 的话就会确保一定会重新打包(因为上一次的结果被删掉了嘛)。
事实上如果你能完整了解二者的执行流程并能确认不需要 clean 的话确实只执行 install 就可以了,并不说非得先 clean 再 install,这只是一种缩小构建错误范围的一种方式。