我是Maven新手,我有一个基于Java的web项目,在我的MyEclipse中配置了Maven。
现在,如果我修改了任何java文件那么我需要Run as -> Mvn install
或Mvn package
吗?
from 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。
清洁可以帮助清理不需要的或去除的东西,这些东西有时会碍事。
而不是调试(有时)只是从头开始。
从生命周期参考来看,install将运行项目的集成测试,package不会。
如果您确实不需要安装生成的工件,那么至少使用验证。
你还应该注意,如果你的项目是由几个相互依赖的模块组成的,你应该使用"install"而不是"package",否则你的构建将失败,因为当你使用install命令时,模块A将被打包并部署到本地存储库,然后如果模块B需要模块A作为依赖,它可以从本地存储库访问它。
如果没有使用远程存储库(如artifactory),则使用plain old:mvn clean install
是一个很老的话题,但是,如果你运行你自己的存储库(例如:与artifactory)在你的团队之间共享jar,你可能想要使用
mvn clean deploy
。
这样,您的持续集成服务器就可以确保所有依赖项都被正确地推送到远程存储库中。如果您错过了一个,mvn将无法在CI本地m2存储库中找到它。
package—获取编译后的代码,并将其打包成可分发的格式,例如JAR或WAR文件。Install -将包安装到本地存储库中,以便在本地的其他项目中作为依赖项使用
正确的方法是mvn package
,如果你对构建的核心部分做了正确的事情,那么就不需要在本地存储库中安装包。
此外,如果你使用Travis,你可以"缓存"你的依赖,因为它不会触及你的$HOME.m2/repository
,如果你使用自己的项目包。
在实践中,如果你甚至试图做mvn site
,你通常需要先做一个mvn install
。site
有太多的bug,或者是大量维护不善的插件。
这取决于您在更改Java文件后想要实现什么。在您想要测试maven进程之前,您不需要做任何事情。Eclipse/MyEclipse将构建必要的内容,并将输出放在项目中的适当位置。您还可以运行或部署它(例如,如果它是一个web项目),而无需显式地对maven执行任何操作。最后,要在maven存储库中安装项目,您需要执行maven安装。您可能还希望执行其他maven目标,而MyEclipse不会自动执行这些目标。
正如我所说,这取决于你想做什么。