`
juvenshun
  • 浏览: 1597857 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Maven3初窥

阅读更多

Maven3的开发已经完成大半,本周末将发布alpha-3(Twitter @jvanzyl),而Nexus已经开始使用Maven3进行构建,于是我也开始使用Maven3。

 

http://svn.apache.org/repos/asf/maven/maven-3/trunk 签出最新的maven3代码,然后使用maven2进行build,build完毕之后,便能得到Maven安装文件apache-maven/target/apache-maven-3.0-SNAPSHOT-bin.zip ,接着升级本地的maven2至maven3,检查安装如下:

控制台输出
juven@juven-ubuntu:~$ mvn -v
Apache Maven 3.0-SNAPSHOT (r833360; 2009-11-06 19:53:14+0800)
Java version: 1.6.0_11
Java home: /usr/local/jdk1.6.0_11/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux" version: "2.6.27-7-generic" arch: "i386" Family: "unix"
 

Maven本身提倡的一个原则是,不要使用任何外部的SNAPSHOT依赖,这里我却在使用SNAPSHOT的Maven,未免有些讽刺的意味,因此难免有些担心。不过,build完Nexus之后,我的担心就消除了,使用maven3 build Nexus没有出现任何问题。而且从build输出我就发现maven3的一大优点,build输出更加明了:

Maven3输出
[INFO] Building Nexus (API) 1.4.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.2:clean (default-clean) @ nexus-api ---
[INFO] Deleting directory /home/juven/workspaces/ws-nexus/nexus/nexus-api/target
[INFO]
[INFO] --- maven-resources-plugin:2.4:resources (default-resources) @ nexus-api ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /home/juven/workspaces/ws-nexus/nexus/nexus-api/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:2.0.2:compile (default-compile) @ nexus-api ---
[INFO] Compiling 191 source files to /home/juven/workspaces/ws-nexus/nexus/nexus-api/target/classes
[INFO]
[INFO] --- plexus-component-metadata:1.2.1:generate-metadata (process-classes) @ nexus-api ---
[INFO] Discovered 1 component descriptors(s)
[INFO]
[INFO] --- maven-resources-plugin:2.4:testResources (default-testResources) @ nexus-api ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /home/juven/workspaces/ws-nexus/nexus/nexus-api/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:2.0.2:testCompile (default-testCompile) @ nexus-api ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- plexus-component-metadata:1.2.1:generate-test-metadata (process-test-classes) @ nexus-api ---

比较下Maven2的输出:

Maven2输出
[INFO] Building Spice Timeline
[INFO] task-segment: [clean, install]
[INFO] ------------------------------------------------------------------------
[INFO] [clean:clean]
[INFO] Deleting directory D:\demo\spice-timeline\target
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:compile]
[INFO] Compiling 14 source files to D:\demo\spice-timeline\target\classes
[INFO] [plexus-component-metadata:generate-metadata {execution: process-classes}]
[INFO] Discovered 3 component descriptors(s)
[INFO] [resources:testResources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:testCompile]
[INFO] Compiling 4 source files to D:\demo\spice-timeline\target\test-classes
[INFO] [plexus-component-metadata:generate-test-metadata {execution: process-test-classes}]
[INFO] [surefire:test]
[INFO] Surefire report directory: D:\demo\spice-timeline\target\surefire-reports

Maven3的输出中,正在运行的插件,以及build所处的项目信息更加清晰。使用缩进来标示插件,更容易找到各个插件的运行情况,而增加@ nexus-api这样的信息,就能在一个多模块构建中更方便的看到当前所build的项目。

 

目前,几乎没有什么关于Maven3的文档,不过有两篇博客和一个wiki提供了很多有用的信息:

Maven 3.0 technology preview: Interview with Benjamin Bentmann

Maven 3.x: Paving the desire lines — Part One

Maven 3.x Compatibility Notes

 

基于以上的信息以及我自己简单的使用经验,这里有一个简单的总结,归纳Maven3主要的目的和特性:

  • 重构和清理代码库
    Maven3减少了代码中模块的数量,并基于大量的集成测试,对Maven核心进行重大的重构。一方面方便修复一些之前由于Maven2架构问题无法修复的bug,另一方面,更简单优雅的代码也容易吸引开源爱好者的加入及贡献。
  • 完全兼容Maven2
    Maven3不会破坏现存的Maven2构建,为此Maven团队已经开发了500多个集成测试以覆盖各种情况,到GA版本的时候,这个数字会达到600。
  • 改进多模块构建
    Maven2的多模块构建中,模块A必须install之后才能被模块B使用,Maven3消除了这一限制,比如说模块A编译之后,模块B就能直接使用其输出class。
  • 改进插件版本解析机制
    Maven2的一大问题是用户可以不指定插件版本就能直接使用插件,而Maven会自动解析最新的插件版本(可能是SNAPSHOT),这造成了build的不可预知性,有时会因为某个插件版本的变化而导致build失败。自maven 2.0.9开始所有核心插件明确指定了版本,但这还不够,在Maven3中,如果发现有未指定版本的插件,Maven会发出警告,此外,如果你忽略警告,Maven也只会解析最新的RELEASE版本,而不会再使用SNAPSHOT。这样,既保持了对Maven2的兼容,也在最大程度上避免因插件版本不稳定引起的build失败。
  • 从核心分离site和reporting模块
    Maven2的核心生命周期包含了site,而site又与Doxia绑定,maven3将site以及reporting分离,通过插件,当前的maven2 site仍然可以使用,而且,使用非Doxia格式的site也成为了可能。
  • 更好的支持嵌入环境如CI和IDE
    Maven2缺乏对嵌入环境的考虑,maven3基于一些集成的经验如m2eclipse, hudson,对这一点进行了改进,因此,将来在IDE和CI服务器,或者Nexus中,集成Maven会更加方便。

最后,我将持续对Maven3进行关注,并在博客中更新相关信息。

20
9
分享到:
评论
4 楼 itvincent 2009-12-25  
前两天刚换了,貌似改进多模块构建
3 楼 lovefly_zero 2009-11-12  
老大 你不是吧 弄张更猥琐的
2 楼 xwkp2008 2009-11-10  
支持下!希望maven能发展的更好,绝对是值得一用的构建工具
1 楼 yanguoyu 2009-11-10  
沙发。

相关推荐

    maven学习-初窥门径

    Maven是一个强大的项目管理工具,它在Java开发领域中广泛使用,主要负责项目的构建、依赖管理和文档生成。Maven的核心功能包括项目对象模型(Project Object Model,POM)、依赖管理系统、项目生命周期和插件系统。 ...

    程序员Linux教程初窥入门

    程序员Linux教程初窥入门主要针对初级入门程序员的课程,也是为后期学习其他课程的一个基础,Git、Maven、Jenkins、Redis等等都需要使用到基本的Linux知识,也为后期架构师课程打下基础

    IMG_20250415_160847.jpg

    IMG_20250415_160847.jpg

    big_dripleaf_stem.png

    big_dripleaf_stem

    计算机求职面试内容与技巧分享-针对应届毕业生的华为、腾讯技术岗位准备指南

    内容概要:本文详细介绍了针对国内顶级科技公司(如华为、腾讯)的计算机求职面试内容与技巧。文章首先概述了技术能力考察的重点领域,包括数据结构与算法、操作系统、计算机网络、数据库以及特定编程语言的深入知识点。接着阐述了项目经验和系统设计方面的考察标准,强调了STAR法则的应用和具体的设计案例。此外,还分别描述了两家公司在面试流程上的不同之处,提供了具体的面试技巧,如代码编写的注意事项、项目回答的数据支持方法、系统设计的关键考量因素以及反问面试官的有效问题。最后,给出了避坑指南和资源推荐,帮助求职者更好地准备面试。 适合人群:即将或计划进入华为、腾讯等大型科技企业工作的应届毕业生和技术人员。 使用场景及目标:①帮助求职者了解并准备好技术面试所需的知识点;②指导求职者如何有效地展示自己的项目经验;③提供系统设计题目的解答思路;④传授面试过程中需要注意的行为规范和沟通技巧。 阅读建议:由于文中涉及大量专业知识和技术细节,建议读者在阅读时结合自身背景有选择地进行重点复习,并利用提供的资源链接进一步深化理解。同时,在准备过程中要注意将理论知识与实际操作相结合,多做练习以增强信心。

    基于SpringBoot的课程设计选题管理系统(源码+数据库+万字文档+ppt)525

    基于SpringBoot的课程设计选题管理系统,系统包含三种角色:管理员、用户,教师主要功能如下。 【用户功能】 系统首页:浏览课程设计选题管理系统的信息。 个人中心:管理个人信息,查看选题进展和历史记录。 课题信息管理:浏览已有的课题信息。 选题信息管理:查看已选择的选题信息。 自拟课题管理:提出和管理个人自拟的课题,。 系统管理:修改个人密码。 【管理员功能】 系统首页:查看系统整体概况。 个人中心:管理个人信息。 学生管理:审核和管理注册学生用户的信息。 教师管理:审核和管理注册教师用户的信息。 课题信息管理:监管和管理系统中的课题信息,包括发布、编辑、删除等。 课题分类管理:管理课题的分类信息。 选题信息管理:查看学生已选题目的情况,包括审批和管理选题流程。 自拟课题管理:审批和管理学生提出的自拟课题。 系统管理:管理系统的基本设置。 【教师功能】 系统首页:查看系统。 个人中心:管理个人信息。 课题信息管理:浏览已有的课题信息。 课题分类管理:管理课题的分类信息。 选题信息管理:查看学生已选题目的情况。 自拟课题管理:提出和管理个人自拟的课题。 系统管理:校园资讯管理。

    橡胶履带牵引车辆改进设计(无极自动变速器方案设计).rar

    橡胶履带牵引车辆改进设计(无极自动变速器方案设计).rar

    1-剑桥大学发布GVAR数据集-社科数据.rar

    剑桥大学发布的GVAR(Global Vector Autoregressive)数据集是用于全球宏观经济分析的重要社科数据资源。该数据集基于GVAR模型开发,旨在量化宏观经济发展对金融机构的影响,并分析全球经济互动。GVAR模型通过处理高维系统中的相互作用,解决了“维度诅咒”问题,适用于国家、地区、行业等多层次的经济分析。数据集包含1979-2016年33个国家的季度数据,可用于冲击情景分析、预测及政策评估。配套的GVAR工具箱(GVAR Toolbox)提供了用户友好的界面,支持MATLAB和Excel操作,便于研究人员开展实际应用。该数据集为经济学、金融学及相关领域的学术研究和政策制定提供了有力支持。

    某汽车联合车间工艺布置图.zip

    某汽车联合车间工艺布置图.zip

    在stm32f407zgt上通过标准库实现w5500tcpserver和client

    在stm32f407zgt上通过标准库实现w5500tcpserver和client,可以ping通速率不快

    基于Python的微信跳一跳游戏程序.zip

    基于Python的微信跳一跳游戏程序

    white_concrete.png

    j

    ElectLines.py

    ElectLines.py

    【Python测试开发】算法能力测试卷:涵盖选择题、填空题、编程题及综合题的全面考核

    内容概要:本文档是一份针对Python测试开发工程师的算法能力测试卷,涵盖选择题、填空题、编程题和综合题四个部分。选择题考察Python基础知识、数据结构与算法、HTTP协议等;填空题涉及递归、排序、设计模式、HTTP请求方法、测试框架等具体知识点;编程题要求完成字符串反转、链表环检测、二叉树最大深度、两数之和及单元测试类的编写;综合题则包括设计自动化测试框架和实现测试报告生成器,旨在评估考生对Python编程和测试开发的全面掌握程度。 适合人群:具备Python编程基础,从事或计划从事测试开发工作的工程师。 使用场景及目标:①作为招聘流程中的技术考核工具;②帮助工程师自测和提升Python测试开发技能;③为企业内部培训提供标准化的评测标准。 阅读建议:此测试卷不仅考察语法和算法,更注重实际编程能力和解决问题的思路。建议考生在准备过程中多动手实践,熟悉常见的算法和数据结构,并掌握常用的测试框架和工具,如pytest、coverage等。同时,理解每个题目背后的设计意图,有助于更好地应对实际工作中的挑战。

    一级减速器成套CAD图【22CAD】.rar

    一级减速器成套CAD图【22CAD】.rar

    beetroots_stage2.png

    beetroots_stage2

    IMG_20250415_104619.jpg

    IMG_20250415_104619.jpg

    吴萌2262040206.zip

    吴萌2262040206.zip

    Android开发banner效果demo源码

    Android开发banner效果,用的是youthbanner的库,你们也可以去找原库demo

    h5py-3.13.0-cp310-cp310-win_amd64.whl

    该资源为h5py-3.13.0-cp310-cp310-win_amd64.whl,欢迎下载使用哦!

Global site tag (gtag.js) - Google Analytics