学习Maven的思考

bpa*_*apa 8 java maven-2

我有一个侧面项目我在Java中.这是一个非常简单的webapp.它在Linux服务器上运行Tomcat并使用MySQL数据库.大多数代码都是使用Spring Framework编写的.它有很多单元测试.当我在Eclipse中编码时.当我部署应用程序时,我运行一些shell脚本将WAR文件移动到Web服务器,执行数据库更新,并对apache配置进行更改.我是唯一一个开发它的开发人员,现在它只部署到一个环境(生产),虽然有一天我可能想要一个测试或暂存环境.我通过Eclipse插件使用SVN版本控制.

我总是听说有人使用Maven作为他们的项目.由于有这么多人使用它,我对自己说它一定很好.我想在业余时间学习它.唯一的问题是我为什么不想使用Maven而卖得不透明?我的第一段听起来像是适合Maven的项目吗?对于与数据库交互的项目,它是否具有任何特定优势?

Mik*_*eck 11

Maven非常适合您的项目IMO.Maven是一个全面的构建和部署管理工具.它最大的优势在于它使构建脚本能够比功能上可比较的Ant文件或shell脚本显着地维护.

使用maven有很多优点,最大的优点是它优于约定优于配置.这意味着如果您使用Maven目录结构布置项目,则几乎不需要任何配置来构建和运行JUnit测试.

Maven为您提供的另一项重大胜利是依赖管理.您可以在Maven的配置文件(称为项目对象模型(POM))中以声明方式定义项目的依赖项,Maven可以将所有jar存储在它维护的本地目录结构中.对于公开可用的工件,罐子会自动从Maven中央存储库下载,如果是内部或专有的第三方罐子,您可以使用单个命令将它们安装到存储库中.

除了组织这些工件并自动设置构建类路径以包含所有必需的jar之外,maven还将管理依赖性层次结构.这意味着如果你的项目依赖于jar A而A依赖于jar B,那么即使你没有在构建配置中明确地将它列为依赖项,jar B也会自动与你的WAR捆绑在一起.

另外,从专业开发的角度来看,学习Maven是有道理的,因为根据我的经验,Maven已经取代Ant作为开源和专有Java项目中的法律选择构建工具.

所有这些都说,如果你有一个快速可靠的构建系统,那么仅仅为了使用其他人所用的相同工具而转换为Maven可能是不值得的.


Pab*_*dez 8

Maven对你想做的事情很好.与大多数构建工具不同,maven明智地使用约定(至少比其他许多工具更好),并且它为您提到的每个区域都有"插件":

单元测试:maven surefire插件

Eclipse集成:m2eclipse

部署WAR文件:WAR插件Deploy插件

Maven还可以帮助您对Tomcat进行集成测试(如果有的话),因为您可以使用货物插件启动,停止或部署战争.

无论如何,如果你打算在业余时间阅读,这里有一本免费的书(PDF格式):Maven the definitive guide

希望能帮助到你!


sbl*_*ndy 6

我正在工作中愤怒地使用maven.这是一个严厉的情妇.只要你正在做很多其他人所拥有的事情,这会让事情变得简单,这很重要,只要你按照maven认为应该做的方式来做.走开那条狭窄的道路,它会在每一步都为你而战.

BuildR从侧面使用它给我留下了深刻的印象.它可以像ANT一样灵活,同时利用maven的依赖系统.此外,它正处于孵化阶段,所以它的边缘有点粗糙.

  • Maven的主要前提是"约定优于配置",这意味着他们正在为您做所有的工作,当且仅当您将自己提交给他们(普通且通常易于生活)的约定范例时.由于这个原因,将旧项目拖入maven通常充满了灾难. (2认同)

Arn*_*son 4

您的项目听起来不像是适合 Maven 的项目。您似乎有一个工作开发环境。为什么要另外设立一个呢?它只会给你多一个需要维护的项目文件,这违反了良好的 ol' DRY原则。