《Maven实战》书评

当前位置:首页 > 计算机网络 > 软件工程/开发项目管理 > Maven实战

出版社:机械工业出版社
出版日期:2010年12月
ISBN:9787111321545
作者:许晓斌
页数:361页

Maven使用者必看的书籍之一

从收到Juven的第一份手稿开始,我就一直在期待它的出版。很久就开始接触Maven,但是Juven翻译的《Maven权威指南》中文版才正式把我引向了Maven的殿堂。本书详尽的介绍了Maven的方方面面,更可贵的是,它提供给我们这些软件开发人员们一种新的思考方式。相对于很多国内技术书籍的粗制滥造,本书绝对会给你一个全新的看法。期待随着Maven的更新换代,笔者也能修订更新,一版再版。

专业人写的专业书

基本是花了一个半天通读了此书。书很好读,不晦涩。在讲构建生命周期的章节时,会发现理解某个过程的捷径就是搞清楚相关工具的使用。比如,我们查看POM文件,就会知道构建需要做哪些配置。包括清理、初始化、编译、测试、打包、集成测试、验证、部署。Maven是个平台,集成了许多插件。书里也讲了一些CI方面的内容。

绝对力荐,从实践中全面学习Maven

从接触Springside后开始学习Maven,因为我的思想是“工欲善其事必先利其器”,所以有幸认识了Juven并跟随他学习Maven工具,开始先看了Juven翻译的《Maven权威指南》但是没有出版所以一直期待适合国人阅读习惯的《Maven实战》……使用Maven也有段时间了,然后再系统的根据书的引导一步步深入学习,最终就是明白其运行的原理,并且通过实际的例子明白在真实企业应用中是怎么配置以及和其他工具的协作方式从语言组织以及内容方面说绝对是力荐的好书,而且目前业界对此书一致的好评;适合初学者或者有经验的作为工具书皆宜。

更方便的去管理项目

一直在用maven的,但是基本只是用于管理依赖。看完了本书,感觉还是有很多收获的。maven 不仅仅是管理依赖,其实他朗阔了项目管理整个生命周期。可以更方便有效的去管理工程项目。功能比ant 强大多了。

一本不错的Maven持续集成的书

电子版看了一遍觉得不错,赶紧买了一本纸质的书,国内写的好的计算机方面的书籍不多。这本应该是写得比较好的,支持一下。看目录就感觉比较靠谱,内容比较全面,涉及到maven的各个方面。行文通俗易懂,不但有理论,更注重实战。尤其是私服、用 Hudson 进行持续集成等章节,对于构建自己的持续集成服务极具参考价值。个人参考书中的介绍用hunson+svn+maven搭建了一套持续集成的环境,效果不错。对于想了解maven和持续集成的同学强烈推荐。

很好的Maven学习方面的书

这本书基本已经看完了,写的很好!感觉作者的实战经验比较丰富,所以写的也很清晰,明了。常用的应用场景也都有考虑到,很全面。支持这样的原创书籍!内容本身没有问题,书的纸张感觉有点差,很薄!上次一不小心撕烂了一页,心疼了半天。

Maven开发必备,强烈推荐!(转自卓越用户)

http://www.amazon.cn/mn/reviewDetailApp?uid=478-3438494-9935110&reviewid=3998013拿到书的当晚就读完了,欲罢不能! 全书包括附录300页余。内容全面而精炼! 从Maven的安装到优化; 从IDE plugin到Hudson集成测试; 从Nexus配置与管理到如何自己编写插件。 可以说是适合各个层次的读者! 特别是作者根据自己多年经验加入了Best Practice,给读者很多启发! 我用Maven也两年多了,还是从书中学到了很多东西。 一些困扰两年的问题,也都找到了答案! 5颗星!Maven开发必备,强烈推荐! Sincerely, Shanbo

上市一天就飙升至互动网爬行榜第6名!

谢谢各位朋友的支持,《Maven实战》上市一天就冲到互动网畅销排行榜第6名了,热泪盈眶啊!希望这本书对大家有帮助,同时也希望大家多给我们和Juven Xu提意见,我们一定会把这本书维护好,随着Maven的发展而不断地完善下去。[url]http://www.china-pub.com/197177[/url]

介绍了一套依托Maven持续继承工具

依托Maven介绍了Java开发过程中用到的工具,算是比较全面,并且通俗易懂,正本边看边练下来,还是有收获的。看完此书之后,书中介绍大部分工具在平时的开发工作中应该都可以用到。现在就是想把书中介绍的工具串起来,简单搭一套持续集成的开发环境。

Maven实战-阅读笔记

作者网站:http://www.juvenxu.com/mvn-in-action/Maven简介 (免费试读) 1.1 何为Maven1.2 为什么需要Maven1.3 Maven与极限编程1.4 被误解的MavenMaven安装 (免费试读) (免费迷你版) 2.1 在Windows上安装Maven2.2 在基于Unix的系统上安装Maven2.3 安装目录分析2.4 设置HTTP代理2.5 安装m2eclipse2.6 安装NetBeans Maven插件2.7 Maven安装最佳实践Hello World (免费试读) (免费迷你版) 3.1 编写POM P47POM(Project Object Model,项目对象模型)3.2 编写主代码3.3 编写测试代码3.4 打包和运行3.5 使用Archetype生成项目骨架3.6 m2eclipse简单使用3.7 NetBeans Maven插件简单使用背景案例 P64 -------------------4.1 简单的账户注册服务4.2 需求阐述4.3 简要设计4.3.1 接口4.3.2 5 坐标和依赖 P70Maven的一大功能是管理项目依赖。为了能自动化地解析任何一个Java构件,Maven就必须将他们唯一标识,这就依赖管理的底层基础----坐标。5.1 何为Maven坐标 坐标(Coordinate)Maven定义了一些规则:世界上任何一个构件都可以使用Maven坐标唯一标识,Maven坐标的元素包括groupId、artifactId、version、packaging、classifier.Maven内置了一个中央仓库的地址:http://repo1.maven.org/maven25.2 坐标详解项目构件的文件名是与坐标向对应的,一般的规则为artifactId-version [-classifier].packaging, [-classifier]表示可选。如:nexus-indexer的主构件为nexus-indexer-2.0.0.jar,附属构件有nexus-indexer-2.0.0-javadoc.jar5.3 account-email5.4 依赖的配置<project>...<dependencies><dependency><groupId>...</groupId><artifactId>...</artifactId><version>...</version><type>jar/</type><scope>compile/test/provided/runtime/system/import</scope><optional>...</optional><exclusions><exclusion>...</exclusion></exclusions></dependency></dependencise>...</project>5.5 依赖范围5.6 传递性依赖5.7 依赖调解5.8 可选依赖5.9 最佳实践6 仓库 P946.1 何为Maven仓库6.2 仓库的布局6.3 仓库的分类仓库分为:本地仓库 和 远程仓库中央仓库是Maven核心自带的远程仓库,它包含了绝大部分开源的构件。在默认配置下,当本地仓库没有Maven需要的构件的时候,它就会尝试从中央仓库下载。私服是另一种特殊的远程仓库,为了节省带宽和时间,应该在局域网内架设一个私有的仓库服务器,用其代理所有外部的远程仓库。内部的项目还能部署到私服上供其他项目使用。常见的公开的远程仓库有:Java.net Maven库(http://download.java.net/maven/2)和JBoss Maven库(http://repository.jboss.com/maven2/)6.4 远程仓库的配置6.5 快照版本6.6 从仓库解析依赖的机制6.7 镜像6.8 仓库搜索服务6.8.1 Sonatype Nexus: http://repository.sonatype.org6.8.2 Jarvana http://www.jarvana.com/jarvana/6.8.3 MVNbrowser http://www.mvnbrowser.com6.8.4 MVNrepository http://mvnrepository.com/6.8.5 选择合适的仓库搜素服务:主流的Maven公共仓库:central、JBoss、Java.net7 生命周期和插件 P1147.1 何为生命周期生命周期包含了项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等几乎所有构建步骤。Maven的生命周期是抽象的,这意味着生命周期本身不做任何实际的工作,在Maven的设计中,实际的任务(如编译源代码)都交由插件来完成。这种思想与设计模式中的模板方法(Template Method)非常相似。模板方法模式在父类中定义了算法的整体结构,子类可以通过实现或者重写父类的方法来控制实际的行为,这样既保证了算法有足够的可扩展性,有能够严格控制算法的整体结构。public abstract class AbstractBuild {public void build() {initialize();compile();test();packagee();integrationTest();deploy();}protected abstract void initialize();protected abstract void compile();protected abstract void test();protected abstract void packagee();protected abstract void integrationTest();protected abstract void deploy();}默认插件:针对编译的插件有:maven-compiler-plugin针对测试的插件有: maven-surefire-plugin7.2 生命周期详解7.2.1 三套生命周期Maven拥有三套相互独立的生命周期,它们分别为clean、default和site。clean生命周期的目的是清理项目,default生命周期的目的是构建项目,而site生命周期的目的是建立项目站点。7.2.2 clean生命周期clean生命周期的目的是清理项目,它包含三个阶段:1) pre-clean执行一些清理前需要完成的工作。2)clean 清理上一次构建生成的文件。3)post-clean执行一些清理后需要完成的工作。7.2.3 default生命周期default生命周期定义了真正构建时所需要执行的所有步骤,它是所有生命周期中最核心的部分,其包含的阶段如下,validateinitializegenerate-sourcesprocess-sources处理项目主资源文件。generate-resourcesprocess-resourcescompile编译项目的主源码。一般来说,是编译src/main/java目录下的Java文件至项目输出的主classpath目录中。process-classesgenerate-test-sourcesprocess-test-sources 处理项目测试资源文件。test-compile编译项目的测试代码。一般来说,是编译src/test/java目下的Java文件至项目输出的测试classpath目录中。process-test-classestest 使用单元测试框架运行测试,测试代码不会被打包或部署。prepare-packagepackage接受编译好的代码,打包成可发布的格式。如JAR.pre-integeration-testintegration-testpost-integration-testverifyinstall将包安装到Maven本地仓库,供本地其他Maven项目使用。deploy将最终的包复制到远程仓库,工其他开发人员和Maven项目使用。官方解释:http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html7.2.4 site生命周期site生命周期的目的是建立和发布项目站点,Maven能够基于POM所包含的信息,自动生成一个友好的站点,方便团队交流和发布项目该生命周期包含如下阶段:pre-site执行一些在生成项目站点之前需要完成的工作site生成项目站点文档post-site执行一些在生成项目站点之后需要完成的工作。site-deploy将生成的项目站点发布到服务器上。7.2.5 命令行与生命周期:从命令行执行Maven任务的最主要方式就是调用Maven的生命周期阶段。$mvn clean:该命令调用clean生命周期的clean阶段。实际执行的阶段为clean生命周期的pre-clean和clean阶段。$mvn test:该命令调用default生命周期的test阶段。实际执行的阶段为default生命周期的validate、initialize等,直到test的所有阶段。这也解释了为什么在执行测试的时候,项目的代码能够自动得以编译。$mvn clean install$mvn clean deploy site-deploy 的最后一个阶段,site-deploy为site生命周期的最后一个阶段。7.3 插件目标 ============P1187.4 插件绑定7.5 插件配置7.6 获取插件信息7.7 从命令行调用插件7.8 插件解析机制聚合与继承 8.1 account-persist8.2 聚合8.3 继承8.4 聚合与继承的关系8.5 约定优于配置8.6 反应堆使用 Nexus 创建私服 9.1 Nexus简介9.2 安装Nexus9.3 Nexus的仓库与仓库组9.4 Nexus的索引与构件搜索9.5 配置Maven从Nexus下载构件9.6 部署构件至Nexus9.7 Nexus的权限管理9.8 Nexus的调度任务9.9 其他私服软件使用 Maven 进行测试 10.1 account-captcha10.2 maven-surefire-plugin简介10.3 跳过测试10.4 动态指定要运行的测试用例10.5 包含与排除测试用例10.6 测试报告10.7 运行TestNG测试10.8 重用测试代码使用 Hudson 进行持续集成 11.1 持续集成的作用、过程和优势11.2 Hudson简介11.3 安装Hudson11.4 准备Subversion仓库11.5 Hudson的基本系统设置11.6 创建Hudson任务11.7 监视Hudson任务状态11.8 Hudson用户管理11.9 邮件反馈11.10 Hudson工作目录构建 Web 应用12.1 Web项目的基本结构12.2 account-service12.3 account-web12.4 使用jetty-maven-plugin进行测试12.5 使用Cargo实现自动化部署版本管理 13.1 何为版本管理13.2 Maven的版本号定义约定13.3 主干、标签与分支13.4 自动化版本发布13.5 自动化创建分支13.6 GPG签名灵活的构建 14.1 Maven属性14.2 构建环境的差异14.3 资源过滤14.4 Maven Profile14.5 Web资源过滤14.6 在Profile中激活集成测试生成项目站点 15.1 最简单的站点15.2 丰富项目信息15.3 项目报告插件15.4 自定义站点外观15.5 创建自定义页面15.6 国际化15.7 部署站点m2eclipse 16.1 m2eclipse简介16.2 安装m2eclipse16.3 新建Maven项目16.4 导入Maven项目16.5 执行mvn命令16.6 访问Maven仓库16.7 管理项目依赖16.8 其它实用功能编写 Maven 插件 17.1 编写Maven插件的一般步骤17.2 代码行统计Maven插件17.3 Mojo标注17.4 Mojo参数17.5 错误处理和日志17.6 测试Maven插件Archetype 18.1 Archetype使用再叙18.2 编写Archetype18.3 Archetype Catalog

著名社区InfoQ对本书作者Juven Xu的采访!

Maven是Java世界中一款历久弥新的构建工具,很多耳熟能详的开源项目都是基于Maven来构建的。Maven 3刚推出不久,InfoQ有幸采访到国内唯一的Sonotype(Maven背后的公司)员工许晓斌先生,请他谈谈关于Maven 3以及他即将出版的新书《Maven实战》。1. 首先,请您介绍你自己,从什么时候开始你从事Maven的推广工作,以及你现在在做些有什么有趣的事情呢?我从07年开始接触Maven,慢慢学习并在实际项目中推广使用,然后慢慢喜欢上了这个技术。1年之后我开始编写Maven中文博客并翻译《Maven权威指南》,并且维护了一个Google Group,我想这些事情对于Maven在国内的推广起到了一定的作用。也正是由于这些工作的关系,我有机会熟悉Maven的方方面面,并加入了Sonatype —— Maven之父Jason Van Zyl创建的公司。目前我主要做两方面的工作,其一是维护Maven中央库和Sonatype OSS仓库托管服务,该服务为开源项目提供免费的Maven仓库并帮助他们同步自己的构件至中央仓库。目前有超过600个项目在使用该服务,包括知名的JUnit、TestNG、Ehcache等等。除此之外我也参与Nexus的开发,开源的、商业的都有。2. Maven 3刚刚推出不久,据说这个新版本在性能上有很大的提高。相比较以前的版本,你觉得最大的变化、最重要的新特性是哪些呢?Maven 3发布的第一时间我就写了篇博客进行介绍,其实从性能上来说,抛开并行构建不谈,用户不会感受到很明显的提高,这是因为Maven本质上是将构建工作给其他工具来做的,例如编译用javac,测试用JUnit,因此给Maven的改进余地不多。使用Guice代替Plexus从一定程度上能改进性能,但不是很明显。我个人认为Maven 3最重要的改进是清理,包括代码清理和不良特性的清理,例如在Maven 3中,你使用插件不声明版本不会引入快照,而Maven 2就因为快照插件的问题被很多人诟病。此外,Maven 3的并行构建特性也让人眼前一亮,只要模块组织合理,多个模块能够得以同时构建,充分利用多核资源。3. 在今年2月份,InfoQ有篇新闻是关于Maven 3即将采用Guice来作为新的DI层,请问这在Maven 3里面实现的如何?这对那些采用Maven的开发者来说,有着什么样的好处呢?采用Guice作为DI容器最大好处在于标准化,Maven之前使用的Plexus历史也很久,但发展得很差,文档也很缺乏,转到Guice后,由于大家更熟悉,就可以吸引更多的贡献者。Maven团队也不再需要花时间去维护,有了问题,可以得到Guice社区的帮助。Maven 3在采用Guice的同时还必须支持Plexus风格DI标注或XML配置,以兼容现有的数以百计的Maven插件。为此Maven团队基于Guice 2.0所支持的自定义注入器,开发了一个中间层模块,该模块包含一个匹配器来识别你的标注配置是Plexus风格还是Guice支持的JSR300风格,如果是Plexus风格则再应用额外的集成逻辑。实现的细节在这两篇博客中有介绍:The Guice/Plexus Bridge and Custom Bean Injection,Create a Guice Bean Extension Layer。4. 在InfoQ的这篇关于Maven 3的新闻里,出现了很多开发者对于Maven的评价,可谓毁誉参半。作为Maven的推广者,你怎么来评价这样争论的存在呢?关于Maven的争论从来没有休止过,类似的争论还可以找到很多。但有目共睹的是,越来越多的开源项目在使用Maven作为他们的构建工具。我想那些人反对Maven主要是以下三个个因素:Maven提倡约定优于配置,例如目录结构的约定,很多习惯高度自定义的用户受不了,于是当然就排斥。其实约定有很多好处,例如当你从一个项目转到另外一个项目的时候,你不需要学习另外一套结构。Maven的学习曲线陡峭,一些人花了时间去学习,但没体验到快乐就学不下去了,因此完善的文档很重要。与IDE的集成,这方面m2eclipse的质量确实比不过其他集成如Ant,问题也有一些,但这些都在改善。IDEA对Maven的集成就相当不错。争论还会继续,只要反对者能提出合理的需求,那就是Maven改进的空间。5. 谈一谈你编写的即将出版的那本新书吧,名字叫《Maven实战》?为什么我需要这样一本新的Maven书呢?由于种种原因,我翻译的《Maven权威指南》没有能够在国内出版,这是一个遗憾,很多人告诉我他们自己打印了那本书看,这让我很感动。我很希望国内能有一本印刷上市的关于Maven的书,这是我写《Maven实战》的最原始动机,后来我发现借助这个机会,我能将书写得更接近国人,包括语言的组织,以及内容的安排。例如在《Maven实战》一书中,我介绍了使用Maven进行自动化部署,以及结合Hudson进行持续集成等内容,这些内容都是我实际体会到大家迫切需要的。前面说过,Maven的学习曲线比较陡峭,这是他的天生问题,弥补的办法就是提供完善的文档,对于初学者来说,这样一本书无疑能帮他们少走弯路,节省时间。6. 请您给那些不甚熟悉Maven的开发者们一点建议,怎样才能又快又好的掌握Maven呢?首先不要排斥它,很多人因为Maven有很多约定而受不了,其实Maven这样做能帮助你更规范的管理项目。其次,如果不要太依赖于IDE,IDE能做很多事,但在自动化构建以及持续集成这些方面他不擅长,试着多用用命令行,熟悉Maven命令的同时,也能更深刻地体会一些Maven的概念。还有要耐下心来读读文档,你买我的书看当然最好,想省点可以看《Maven权威指南》。最后就是实践啦,可以看看开源项目怎么用Maven的,然后在实际的项目中尝试,并使用Nexus建立自己的Maven私服。

值得拥有

从infoq下载了迷你电子书,看了一半了,感觉很好,作者写的很有条理,还专门为下载版进行了重新排版,添加了注解,感谢作者如此细心:)

本书官方页面

我在个人站点为本书开辟了一个专门的页面地址:http://www.juvenxu.com/mvn-in-action/该页面包含了本书的详细目录等信息,以后还会更新样章下载、源码下载、堪误等内容。

一个以前没用过maven的人

个人感觉写的挺好的,从基础到应用,很全,适合初学者,当然有一点经验的人也挺适合的,O(∩_∩)O~,而且现在国内中文的maven书太少了O(∩_∩)O哈哈~

内容略拖沓,质量还行,maven功能很全很强大略死板。看好DSL方向的自动构建工具。

花了一天看完,整理内容如下:(1)maven坐标:groupId,artifactId,version,packaging,classfilier.(2)scope依赖范围:2.1:maven有三个classpath对应各自的依赖范围如下:编译(A),测试(B),运行(C)compile:A,B,Ctest:Bprovider:A,Bruntime:B,Csystem(本地):A,B2.2:依赖范围的传递当第二直接依赖范围是compile,传递行依赖范围和第一直接依赖的范围一致当第二直接依赖范围是provided,只传递provided当。。。是test,依赖不传递当。。。是runtime,传递性除compile变成runtime外,其他都与第一直接依赖一致。2.3依赖调节:依赖重复时首先路径最近者优先,其次第一申明者优先。(4)三个生命周期和插件执行4.1clean 清理项目default 构建项目site 建立项目站点4.2maven支持通过mvn命令激活生命周期阶段(通过phase的值绑定),从而执行那些绑定在生命阶段的插件目标还支持直接从命令行调用插件目标。4.3生命周期内置插件绑定和具体任务default生命周期举例:生命周期阶段 插件目标 执行任务process-resources maven-resources-plugin:resources 复制主要资源到主输出目录compile maven-compiler-plugin:compile 编译主代码到主输出目录test maven-surefire-plugin:test 执行测试用例package maven-jar-plugin:jar 创建项目jar包install maven-install-plugin:install 将项目输出构建安装到本地仓库deploy maven-deploy-plugin:deploy 将项目输出构建部署到远程仓库4.4显示依赖关系的命令:mvn dependency:list:显示全部依赖mvn dependency:tree:显示树形依赖关系mvn dependency:analyze:会提示used undeclared dependencies和unused delared dependencies(5)常见插件:maven-compiler-plugin:编译maven-surefire-plugin:测试maven-release-plugin:版本发布maven-site-plugin:站点发布(6)maven提供聚合和继承的用法(7)nexus构建宿主或者代理仓库,hudson实现自动构建等。(8)约定大于配置


 Maven实战下载 精选章节试读


 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024