搭建私有仓库

Maven的仓库是用来存放Maven工程依赖的包的(通常为jar和pom,war包也可以依赖,在一些很复杂的项目中才能用到)。仓库分为三种:中央仓库、第三方仓库、本地仓库。

中央仓库

由Maven官方提供,地址:http://repo1.maven.org/,包含了几乎所有开源项目的包,但没有非开源项目的包,如:sun的私有包,Oracle的驱动包等。在使用上也有一些限制:
第一,Maven的官方仓库的服务器在国外,在国内访问非常慢,经常因为网络超时导致无法下载;
第二,Maven管方仓库有使用频率限制,如果大的团队频繁从官方仓库下载包,会导致IP被封,从而所有人都无法使用;
第三,私有包不适合传到Maven官方仓库;
第四,组织对外网访问的限制,有些公司是不允许随便连接外网。

第三方仓库

由第三方公司搭建,如:http://repository.jboss.com/maven2/、http://repository.sonatype.org/content/groups/public/,公用的“第三方仓库”同样存在“中央仓库”的问题,可能没有IP限制;另一种私有的第三方库只在组织内部使用,通常使用nexus搭建,没有中央仓库和第三方公用仓库的限制,可以愉悦的发布私有包,更重要的下载速度快、稳定。
强烈建议每个使用Maven的组织都搭建自己的私有仓库。

本地仓库

本地仓库相当于“中央仓库”或“第三方仓库”在运行Maven的电脑上的一个缓存,当然只缓存了用过的包,默认在${user.home}/.m2目录下,由于“本地仓库”通常比较大,初始化比较慢,第一次使用时最好从其他人的电脑上复制一份,这样可以大大节省初始化的时间。建议在${MAVEN_HOME}/config/setting.xml中重新指定“本地仓库”的目录,防止缓存过大影响电脑的正常运行,这一点在持续集成服务器上尤其重要。

统一的setting配置

团队成员使用统一的setting.xml文件,在setting.xml中设置使用的仓库、禁用官方仓库等全局设置,非常不建议在项目的pom中做指定仓库这样的设置,这样做的原因主要是因为一个公司只应有一个私有仓库,这样即节省资源,也利于项目的重用和管理。

创建的顶级POM

每一个产品都应该有一个顶级的pom模块儿,在此模块儿中对使用的包、插件、发布用的仓库和一些其他项目级的配置进行设置,其他模块儿都是pom的子模块儿。这样的好处是整个产品的所有模块儿使用的包是一样的,能有效的避免各个模块儿单独配置带来的版本冲突问题。

合理的参数列表

运行mvn命令时常用的参数有,-B -e -U -pl -D -P,这些参数是Maven自身的,在命令行、持续集成环境都适用。

-B

使Maven在批处理模式下运行,避免需要人工参与交互而造成挂起,在持续集成等不希望人工参与的环境很有用。

-e

在运行maven出现异常时打印完整的异常栈,对问题的分析很有帮助

-U

强制Maven检查所有快照版(snapshot)依赖的更新,默认情况下Maven每天检查快照版(snapshot)依赖的是否更新,在实际开发中快照版的更新频率远高于这个频率,-U参数能保证每一次运行都是基于最新状态的,在持续集成环境这一点尤其重要。

-D

设置maven运行时的系统变量,和Java的-D参数类似,如:maven.repo.local、maven.test.skip

-P

指定构建使用的环境变量,通常每个项目(尤其是web项目)会在不同的环境下运行,如:开发环境、测试环境、生产环境等,不同的环境的配置是不完全相同的,使用Maven的profiefs可以方便的构建出适合不同运行环境的包,运行时使用的环境变量由-P参数指定。

-pl

在一个项目有多个模块儿,而又不想同时构建所有模块儿时,通过-pl参数指定要构建的模块儿,个人觉得这个参数用的场景不多,在模块儿很多的情况下,更应该从模块儿的上进行拆分,减少模块儿间的依赖。
 
综上所述,建议的Maven构建命令:jar和pom工程:mvn clean install/deploy -B -e -U -P,web工程:mvn clean package -B -e -U -P

读一本Maven的好书

建议使用Maven的同学们抽时间去阅读一下《Maven实战》这本书,是一本很好的Maven书籍,适合所有Maven用户。

【转】使用Maven的一些小建议,希望你能喜欢的更多相关文章

  1. extjs 优化小建议

    1 原文信息 原文标题: Sencha Con 2013: Ext JS Performance tips 原文地址: [http://edspencer.net/2013/07/19/sencha- ...

  2. 有用的JavaScript开发小建议

    这篇文章将向你分享一些不为人知的但很有用的JavaScript小建议,对那些刚涉及使用JavaScript编程语言的初级开发者应该有很大的帮助. 1. 用数组长度截取数组 我们都知道,对象都是通过使用 ...

  3. 在JAVA中记录日志的十个小建议

    JAVA日志管理既是一门科学,又是一门艺术.科学的部分是指了解写日志的工具以及其API,而选择日志的格式,消息的格式,日志记录的内容,哪种消息对应于哪一种日志级别,则完全是基于经验.从过去的实践证明, ...

  4. Python入门小建议

    "java从心"正式更名"KEN DO EVERTHING".Ken(Can) Do Everything,无所不能 Believe youseft then ...

  5. Docker 部署 redis教程,附带部分小建议,防止踩坑

    Docker 部署 redis,附带部分小建议,防止踩坑 跟所有人一样,我们先从docker基本命令开始 一.拉取redis镜像(配图来自菜鸟,其实截图没多大意义,对比看下) # 默认就拉取laste ...

  6. 微信小程序--关于加快小程序开发的几个小建议

    加快小程序开发的几个小建议 1.使用 app.json创建页面 ​ 按照我们平常的开发习惯,创建一个新的页面,一般都会先创建文件夹,再创建对应page的形式,创建完成后,app.json中会自动注册该 ...

  7. redis优化小建议

    1.优化的一些小建议 1.尽量使用短的key 当然在精简的同时,不要为了key的"见名知意".对于value有些也可精简,比如性别使用0.1. 2.每个redis设置合理内存 每个 ...

  8. Maven 配置使用小技巧

    Spark开发中遇到了一些小问题,都是大神随便一个手指头帮我解决的.保持学习,积累吧! 一. 基于Intellij IDEA编辑器 1. 快捷键 注释/去注释   Ctrl+Shift+? 2. re ...

  9. 关于OpenCart的一个小建议

    OpenCart是一套老牌的开源自由B2C电商系统,最近watch了其托管在在github上的项目,发现还是很活跃的,每天都有人反馈bug. 初步的看一下,它是支持在后台管理多个店铺的,而且可以同一个 ...

随机推荐

  1. 【Unity】10.2 通用动画的导入和设置

    分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 使用类人动画时,Mecanim 的强大之处最明显.但是,尽管没有 Avatar 系统和其他功能,非类人动画也仍然受Mec ...

  2. sql的split()函数

    ALTER function [dbo].[StrToList_Test](@Str varchar()) returns @table table( value nvarchar(max) ) as ...

  3. django rest_framework入门三-Requests和Responses

    这一节,我们介绍rest_framework的Requests和Responses对象,来替代django.http的HttpRequest和HttpResponse对象 1.Requests和Res ...

  4. lua面向对象编程之点号与冒号的差异详细比较

    首先,先来一段在lua创建一个类与对象的代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Class = {} Class.__index = Cl ...

  5. MySQL导入数据遇到Error Number: 1467 Failed to read auto-increment value from storage engine错误

    MySQL导入数据遇到Error Number: 1467 Failed to read auto-increment value from storage engine错误 创建表的语句 CREAT ...

  6. 关于构造函数和this调用的思考

    文中一系列思考和内容引发自以下问题:我需要在一个类的构造函数中调用另一个对象的构造函数,并使用this初始化其中的一个引用成员. 主要遇到的问题: 1. 构造函数的初始化列表中能访问this吗? 很明 ...

  7. Python+SparkStreaming+kafka+写入本地文件案例(可执行)

    从kafka中读取指定的topic,根据中间内容的不同,写入不同的文件中. 文件按照日期区分. #!/usr/bin/env python # -*- coding: utf-8 -*- # @Tim ...

  8. csv和excel互转

    Python csv转换为excel学习笔记: openpyxl模块需要安装pip install openpyxl import openpyxl import csv '''读取csv文件写入ex ...

  9. python3.5 连接mysql

      I did the steps below with Python 3.5.1 and it works: Download driver from here Driver installatio ...

  10. 虚拟机三种网络模式详解(Bridge,Nat,Host-only)

    虚拟机网络模式 无论是vmware,virtual box,virtual pc等虚拟机软件,一般来说,虚拟机有三种网络模式: 1.桥接 2.NAT 3.Host-Only 初学者看到虚拟机有三种网络 ...