Mvn安装或Mvn包

时间:2013-03-20 17:40:40

标签: java maven myeclipse

我是Maven的新手,我有一个基于Java的Web项目,我的MyEclipse中配置了maven 现在,如果我修改了任何java文件,那么我需要做Run as -> Mvn installMvn package吗?

8 个答案:

答案 0 :(得分:142)

来自http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html

  

package:获取已编译的代码并将其打包到其可分发的代码中   格式,例如JAR。

     

install:将软件包安装到本地存储库中,以用作   在本地其他项目中的依赖

所以问题的答案是,这取决于你是否希望将它安装到你的本地仓库中。安装也将运行包,因为它在目标阶段堆栈中更高。

答案 1 :(得分:30)

mvn install是最常用的选项 很少使用mvn package,只有在您使用maven构建过程调试某些问题时才会使用mvn package

请参阅:http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

请注意,mvn install只会创建一个jar文件 如果其他代码依赖于这些jar,mvn clean install会在正确的位置安装jar(和类等)文件

我经常做target;这会删除{{1}}目录并重新创建该位置的所有jar 清洁有助于消除不必要或被移除的东西,这些东西有时会妨碍 而不是调试(有些时候)只是一直开始新鲜。

答案 2 :(得分:8)

Lifecycle reference安装将运行项目的集成测试, package 将不会。

如果您确实不需要安装生成的工件,请至少使用验证

答案 3 :(得分:5)

另外你应该注意,如果你的项目由几个相互依赖的模块组成,你应该使用" install"而不是" package",否则您的构建将失败,因为当您使用install命令时,模块A将被打包并部署到本地存储库,然后如果模块B需要模块A作为依赖项,它可以访问它来自本地存储库。

答案 4 :(得分:4)

如果您 使用远程存储库(如神器),请使用普通旧版:    mvn clean install

相当古老的主题,但AFAIK,如果您运行自己的存储库(例如:带有神器)以在您的团队之间共享jar,您可能想要使用

mvn clean deploy

代替。

这样,您的持续集成服务器可以确保将所有依赖项正确地推送到远程存储库中。如果您错过了一个,mvn将无法在CI本地m2存储库中找到它。

答案 5 :(得分:2)

package - 获取已编译的代码并将其打包为可分发的格式,例如JAR或WAR文件。 install - 将软件包安装到本地存储库中,以用作本地其他项目的依赖项

答案 6 :(得分:1)

正确的方式是mvn package如果你为构建的核心部分做了正确的事情,那么就不需要在本地存储库中安装你的包。

此外,如果您使用Travis,您可以“缓存”您的依赖项,因为如果您为自己的项目使用包,它将不会触及您的$HOME.m2/repository

实际上,如果你甚至尝试mvn site,你通常需要先做mvn install。任何site或者许多维护不良的插件都存在太多错误。

答案 7 :(得分:0)

这取决于您在更改Java文件后尝试实现的目标。在您想要测试maven进程之前,您永远不需要做任何事情。 Eclipse / MyEclipse将构建必要的内容并将输出放在项目中的适当位置。您也可以运行或部署它(例如,如果它是一个Web项目),而无需使用maven明确地执行任何操作。最后,要在maven存储库中安装项目,您需要进行maven安装。您可能还有其他希望执行的maven目标,MyEclipse不会自动执行。

正如我所说,这取决于你想做什么。