Mvn安装或Mvn包
我是Maven的新手,我有一个基于Java的web项目,在MyEclipse中configuration了maven。
现在,如果我修改任何Java文件,那么我需要做Run as -> Mvn install
或Mvn package
?
从http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
package
:获取已编译的代码并将其打包为可分发的格式,如JAR。
install
:将软件包安装到本地存储库中,作为本地其他项目的依赖项
所以你的问题的答案是,这取决于你是否希望它安装到您的本地回购。 安装也将运行包,因为它在目标阶段堆栈中较高。
mvn install
是最经常使用的选项。
mvn package
很less使用,只有当你正在用maven构build过程debugging一些问题的时候。
请参阅: http : //maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
请注意, mvn package
只会创build一个jar文件。
如果其他代码依赖于这些jar子, mvn install
将会这样做, 并将 jar(和class等)文件安装在适当的位置。
我通常做一个mvn clean install
; 这将删除target
目录并重新创build该位置的所有jar。
干净有助于不必要或删除的东西,有时可能会阻碍。
而不是debugging(有些时候)只是开始新鲜的时间。
从生命周期参考 , 安装将运行项目的集成testing, 包不会。
如果您确实需要不安装生成的工件,至less使用validation 。
如果您不使用远程存储库(如artifactory),请使用普通旧式: mvn clean install
很老的话题,但AFAIK,如果你运行你自己的仓库(例如:与artifactory)在你的团队之间共享jar,你可能想要使用
mvn clean deploy
代替。
这样,您的持续集成服务器可以确保所有的依赖关系正确地推送到您的远程存储库。 如果你错过了,mvn将无法find你的CI本地m2存储库。
另外你应该注意的是,如果你的项目是由多个相互依赖的模块组成的,你应该使用“install”而不是“package”,否则你的build会失败,当你使用install命令的时候,模块A会被打包并部署到本地存储库,然后如果模块B需要模块A作为依赖项,则可以从本地存储库访问它。
包 – 获取已编译的代码并将其打包为可分发的格式,例如JAR或WAR文件。 安装 – 将软件包安装到本地存储库中,作为本地其他项目的依赖项
正确的方法是mvn package
如果你的构build的核心部分做了正确的事情,那么应该没有必要安装你的包在本地存储库。
另外,如果你使用Travis,你可以“caching”你的依赖项,因为如果你为你自己的项目使用包,它不会触及你的$HOME.m2/repository
。
实际上,如果你甚至试图做一个mvn site
你通常需要做一个mvn install
之前。 这两个site
错误太多了,或者是很多维护不当的插件。
这取决于您在更改Java文件后要实现的目标。 直到你想testingMaven进程,你永远不需要做任何事情。 Eclipse / MyEclipse将构build必要的东西,并将输出放在项目的适当位置。 你也可以运行或部署它(例如,如果它是一个web项目),而不需要明确地做任何事情与maven。 最后,要在Maven仓库中安装你的项目,你需要做一个Maven安装。 你也可能有其他想要执行的Maven目标,MyEclipse不会自动执行。
正如我所说,这取决于你想要做什么。