现在如果我修改任何Java文件,那我需要执行
Run as -> Mvn install
还是Mvn package
?来自http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
package
:将已编译的代码打包为可分发的格式,例如 JAR。
install
:将软件包安装到本地存储库中,以便在其他项目中作为依赖项使用。
所以对于您的问题的答案是:这取决于您是否要将其安装到您的本地存储库中。由于它位于目标阶段堆栈的较高位置,因此install
也会运行package
。
mvn install
是最常用的选项。
mvn package
很少使用,只有在调试maven构建过程时才会使用。
参见:http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
请注意,mvn package
仅会创建一个jar文件。
如果其他代码依赖于这些jar,则 mvn install
将把该jar(以及类等)文件安装在正确的位置。
我通常执行 mvn clean install
; 这将删除 target
目录并在该位置重新创建所有jar文件。
清理可以帮助处理不需要的或已删除的内容,有时可能会妨碍工作进度。
与其进行调试(有时候),不如始终从头开始。
mvn verify
”。因此,这是对原始问题的相当明确的答案。 - Brent Bradburn同时,请注意,如果您的项目包含多个相互依赖的模块,则应使用“安装(install)”而不是“打包(package)”,否则可能会导致构建失败。因为当您使用“安装(install)”命令时,模块 A 将被打包并部署到本地库中,然后如果模块 B 需要模块 A 作为依赖项,则可以从本地库中访问它。
mvn clean install
虽然这是一个相对久远的话题,但据我所知,如果您运行自己的存储库(例如:使用Artifactory共享jar文件给团队),那么您可能需要使用以下命令:mvn clean deploy
这样,您的持续集成服务器可以确保所有依赖项都被正确推送到远程存储库中。如果您遗漏了其中任何一个,Maven将无法在CI本地m2存储库中找到它。正确的方法是 mvn package
,如果你构建的核心部分做得正确,那么就没有必要在本地仓库中安装软件包。
此外,如果您使用 Travis,可以“缓存”依赖项,因为它不会触及您的 $HOME.m2/repository
,如果您为自己的项目使用 package 命令。
实际上,如果您尝试进行 mvn site
,通常需要先执行 mvn install
。因为 site
或其众多维护状况不佳的插件都存在太多缺陷。
package - 把已编译的代码打包成可分发的格式,例如JAR或WAR文件。 install - 将该软件包安装到本地存储库中,以便在其他项目中作为本地依赖项使用。
这取决于您更改Java文件后想要实现什么目标。如果您不想测试Maven进程,那么您不需要做任何事情。Eclipse / MyEclipse将构建必需的内容并将输出放在项目的适当位置。您还可以运行或部署它(例如,如果是Web项目),而无需显式地使用Maven进行任何操作。最终,为了将您的项目安装到Maven存储库中,您需要执行Maven安装。您可能还有其他希望执行的Maven目标,MyEclipse不会自动执行。
正如我所说,这取决于您想要做什么。