`
BlueMeteorolite
  • 浏览: 3824 次
  • 性别: Icon_minigender_1
  • 来自: 天府
社区版块
存档分类
最新评论

Maven 最佳实践

 
阅读更多

 

   用MAVEN有些日子了,基础的更细的东西请大家参考http://maven.apache.org/,这里就闪过了,只是分享经验...

 

   首先还是白一句,MAVEN的学习曲线比较高,但是带来的益处非常的明显.特别是在项目的TEAM比较大, 多个小组协同工作的时候.而且你可以深刻的理解一些工程之间的横向关系.为你定义一些工程之间的依赖有很好的帮助.为什么要这么做? 可以参考spring, hibernate的发展历史.为什么Spring到后面有如此多的包-spring-*.jar…

 

本地服务器

 

   先用过Artifactory,Nexus.为什么要换?主要ECLIPSE MAVEN PLUGIN(个人经验建议不要使用插件,使用命令行)跟在Artifactory一起工作的时候有个奇怪的问题.每次更新的自产jar,它的索引都无法自动更新.需要登陆ADMIN后重建索引.然后在ECLIPSE插件里面UPDATE INDEX,但还是不能找到这个JAR.实在无法忍受,改试Nexus,Eclipse Maven Plug-in一起工作得不错.INDEX更新及时.顺便说下,INDEX在实际中的作用,MAVEN查找依赖包,就是依靠这个INDEX文件来查询.如果你使用Eclipse Maven Plug-in的话,有个默认的选项,启动时启动INDEX更新.这个主要用来跟MAVEN官方网站上的INDEX文件来同步。这个文件比较大,都长到几十M.

如果要列一下ArtifactoryNexus到底谁好用点?其实两者各有千秋.

     Artifactory:

        · 可以帮你生成本地的Settings文件,这个是非常有用的,MAVEN本地的一个配置文件,SERVER相关的配置都在这 里.Nexus似乎专业版才提供这个功能.

       · 默认给你一个WEB APP(JETTY),做了一些跟WINDOWS结合的工作.可以注册NT SERVICE, 比较方便 在WINDOWS下工作, 当然它也可以在LINUX上工作.Nexus就一个WAR, WAR可以在哪里工作, 它就可以.

    Nexus

       ·  用户管理更强大,有丰富的ROLE,USER定义.

我比较喜欢NEXUSWEB风格,再说,它帮我解决了INDEX问题.

 

配置

 

   个人认为配置是MAVEN学习曲线比较高的主要原因之一.

$MAVEN_HOME$/conf下面有个settings.xml文件,本地MAVEN跟服务器通信,还有本地的仓储位置都在这个文件里面配置, 详细的介绍, 可以打开这个文件, 看注释.

然后到每个POM文件,它是你这个工程的一切信息的源泉(除了代码).换句话说,我们应该把工程的元信息交给POM文件去管理.什么是工程的元信息(主要指ECLIPSE里面的工程)?比如:

       1.       工程类型是Java Standard Project, Dynamic Web Project(DWP), Enterprise Application Project...这个对应Eclipse 工程下面的settings 目录以及.project 文件[小技巧:一般根据POM.xml生成这些文件的时候,使用mvn eclipse:clean eclipse:eclipse就可以了,但是对于DWP工程需要加特殊的参数mvn eclipse: clean eclipse: eclipse -Dwtpversion=2.0或者-Dwtpversion=R7 ,这样你的工程才会被eclipse认成DWP工程,方便你加到server里面做开发,调试]

       2.       工程依赖信息以及继承(包含依赖工程以及jar).对应.classpath文件. 工程还能继承?OUT,这个可以有.为什么你可以定义抽象类,就不能定义抽象工程呢?它在某些情况下是优于组合的.多的不说,设计工程的时候想想如何设计类的. Maven如何做到这点的?其实还是POM.xml.所有的POM.xml都是继承mavenSuper POM,具体参考http://maven.apache.org/pom.html#The_Super_POM 

       3.       MAVEN版本号,这个对应你生成的JAR包所带的版本号.这个是MAVEN承诺的版本依赖管理的基础.其实大家在搭建本地环境的时候(换电脑?),都会有这样的苦恼

   §  重复工作,工程之间依赖要重新一个一个的加,jar包也是,想深入调试某些开源jar,发现要去每个网站上面下载source.[Maven下运行mvn dependency: sources, 所有能在服务器找到的source,全部下来

   §  跑了半天,发现JAR版本不统一(不是吧,大家都是jdom.jar,他的1.1.2,我的1.1.1, 怎么都长成jdom.jar,很多Jar provider也不称职,MANIFEST.MF里面提供的信息通常都灰常的不准确)[Maven为每个jar生成版本号,根本上避免这个问题]

 

       4.       工程目录的约定规则.Maven在根据POM文件生成工程目录时,是按照约定来做的,比如src/main/java/….,也是插件方式实现的,如果需要自己的结构就无法享受MAVEN带来的好处了.所以它的原则是,如果你按照我的说法,我就可以提供什么什么,否则你还是走老路吧.

 

使用

 

2种方式

       1)MAVEN自带的命令,相对稳定,推荐.具体的命令使用,比如一些基本的goal, phase概念,请参考http://maven.apache.org/guides/getting-started/index.html.其实这方面没什么花头,结果跟ANT类似.

        2)Maven for eclipse plug-in功能强大,其实也是调用maven的命令,IDE结合比较好,比如打包,更新依赖但是个人感觉不是很稳定.当依赖是指定的版本范围的时候,插件总是需要检查范围内所有的POM文件,非常耗时.

 

1
1
分享到:
评论

相关推荐

    MAVEN使用最佳实践

    【MAVEN使用最佳实践】 Maven 是一个强大的项目管理和构建工具,它简化了Java应用程序的构建过程,通过一套约定优于配置的原则,使得项目构建、依赖管理和文档生成等工作变得标准化。以下是一些在使用Maven时可以...

    Maven最佳实践之一个好的parent依赖基础

    Maven 最佳实践之一个好的 parent 依赖基础 Maven 是一个流行的项目管理和构建工具,它提供了许多功能来帮助开发者管理项目依赖关系。今天,我们将讨论如何使用 parent 依赖来控制依赖版本,从而避免版本冲突。 ...

    Maven原理和实践-培训课件.ppt

    何为Maven 构建,依赖管理,项目信息聚合 Maven核心概念 坐标,依赖,仓库,生命周期,插件 Maven最佳实践 创建、打包、发布、版本管理 项目实战 Nexus(Todo…) M2eclipse(Todo…)

    【超级好用】maven 3.6.1

    ### Maven最佳实践 - **保持POM简洁**:避免在POM中添加不必要的配置,尽量利用Maven的默认设置。 - **使用父POM**:多个项目共享相同配置时,可以创建一个父POM来统一管理。 - **版本管理**:遵循 Semantic ...

    <<Maven权威指南>>+<<Maven in Action>> pdf扫描版丛书

    1. Maven最佳实践:提供了一些实际项目中如何有效使用Maven的经验和建议。 2. 敏捷开发与持续集成:讲解如何利用Maven与敏捷开发方法(如Scrum、XP)结合,以及如何与持续集成工具(如Jenkins、Hudson)集成。 3. ...

    maven使用文档,maven使用文档

    - [Maven 最佳实践](http://www.mergere.com/m2book_download.jsp) - [Maven 教程](http://www.mkyong.com/maven/) 以上内容涵盖了 Maven 的基本使用方法及其核心概念。对于初学者来说,理解 Maven 的工作原理...

    Maven权威指南中文版及相关实例

    ### Maven最佳实践 1. **遵循约定优于配置**:Maven有标准的目录结构,如src/main/java存放源码,src/test/java存放测试代码。 2. **合理设置POM**:确保POM文件简洁且准确,避免过度配置。 3. **使用依赖管理**...

    Maven视频教程

    ### Maven最佳实践与进阶主题 1. **多模块项目**:介绍如何使用Maven来管理多模块项目,包括模块之间的依赖关系和构建顺序。 2. **自动化构建与持续集成**:探讨如何结合Maven与其他工具(如Jenkins)实现自动化的...

    maven-3.5.4

    ### Maven最佳实践 1. 遵循约定优于配置的原则,保持项目结构的一致性。 2. 使用版本控制工具(如Git)管理代码,避免版本混乱。 3. 尽量减少直接依赖本地JAR,依赖应来源于远程仓库。 4. 定期更新依赖,以获得最新...

    maven 使用入门第三章

    ### Maven最佳实践 - **保持POM的整洁和有序**:合理组织POM结构,避免冗余配置。 - **使用标准目录结构**:遵循Maven推荐的目录结构,便于工具识别和处理。 - **依赖管理策略**:定期更新依赖版本,使用版本锁定...

    收集到的maven学习资源

    这个maven学习资源压缩包可能包含了POM配置示例、Maven命令行操作指南、插件使用教程、Maven最佳实践文档等,这些都是学习Maven的重要材料。通过深入学习和实践,你将能够充分利用Maven的强大功能,提升自己的Java...

    BetterBuildsWithMaven

    #### 八、Maven最佳实践 为了更好地利用Maven,以下是一些推荐的最佳实践: 1. **遵循约定优于配置原则**: Maven内部已经定义了许多默认行为和约定,遵循这些约定可以减少不必要的配置工作。 2. **使用版本控制...

    Maven实战资料教程

    #### 七、Maven最佳实践 1. **统一项目结构**:遵循Maven默认的项目结构有助于提高团队协作效率。 2. **使用插件**:合理利用Maven插件可以提高构建效率,减少错误。 3. **依赖管理**:合理规划依赖管理策略,避免...

    Maven实战中文版

    #### 四、Maven最佳实践 1. **统一项目构建方式** - 使用Maven统一项目构建的方式有助于团队成员之间的协作。 - 统一的构建规则可以减少构建错误和构建时间。 2. **依赖管理** - 保持依赖版本的一致性非常重要...

    Maven版的JPA最佳实践

    **Maven版的JPA最佳实践** 在Java开发中,Maven作为项目构建工具,而JPA(Java Persistence API)则是用于对象关系映射(ORM)的标准,它们结合使用能够帮助开发者更高效地管理和操作数据库。本文将深入探讨在Maven...

    Maven 实战问题和最佳实践.pdf

    dependencyManagement 是表⽰依赖 jar 包的声明,即你在项⽬中的 dependencyManagement 下声明了依赖,maven 不会加 载该依赖,dependencyManagement 声明可以被继承。 dependencyManagement 的⼀个使⽤案例是当有⽗...

    Maven使用讲解 .

    Maven最佳实践 - **保持POM简洁**: 避免过度配置,遵循最小化原则,尽量使用Maven默认配置。 - **使用版本管理**: 为项目依赖设置明确的版本号,避免使用最新的SNAPSHOT版本。 - **合理划分模块**: 根据功能或...

    Better Builds with Maven

    #### 四、Maven最佳实践 ##### 1. **统一构建规范** - 使用相同的构建规范,如统一的目录结构、文件命名规则等,可以提高团队间的协作效率。 ##### 2. **优化依赖管理** - 定期审查项目依赖,避免使用过时或存在...

Global site tag (gtag.js) - Google Analytics