一、jar包管理(仓库)

最佳实践:

1:排除依赖

pom中依赖了某个第三方API,此API又依赖其它API,有可能出问题。(必须申明排除该第三方依赖)

Spring-core又隐式的依赖了commons-logging,而quartz又隐式依赖了slf4j,导致log4j里面的mybatis的sql显示配置不生效。

2:归类依赖

就是把来自同一个项目不同模块的jar的版本号统一用properties管理

3:优化依赖

maven能自动解析一部分的jar冲突,这些工作之后得到的依赖称为已解析依赖。

查看已解析依赖:    mvn dependency:list

以依赖树形式查看(查看jar包之间的依赖关系): mvn dependency:tree

在eclipse中打开一个pom文件,在Dependency Hierarchy的Tab页中,就可以查看当前pom文件中显示声明的jar包,及这些显示声明的jar中隐式引入的依赖jar包。

分析用到却未声明的和声明却未用到的jar: mvn dependency:analyze

二、打包jar文件

如果pom.xml文件中<packaging>war</packaging>  若没有指定则默认打包为jar文件

1 编译命令:mvn clean compile

2 测试命令:mvn clean test

3 打包命令:mvn clean package

4 安装命令:mvn clean install (将打包的jar文件安装到maven的本地仓库中)

5 执行命令:java -jar target \hello-word-1.0-SNAPSHOT.jar

(需要在maven-shade-plugin插件中指定main方法在哪个class类里面)

(需要安装maven-compiler-plugin插件。maven2默认支持jdk1.4 , maven3默认支持jdk1.5)

三、Cargo自动化部署

Cargo是操作web容器的工具。支持几乎所有的web容器。部署到本地web容器,部署到远程的web容器都可以。

四、版本管理

快照版与发布版之间的转换。(前提是已经配置了部署的仓库)

使用 Maven Release Plugin插件的命令:

$mvn release:prepare 准备

$mvn release:perform 执行

五、仓库和镜像

本地仓库:默认在你本地的用户目录下的.m2/repository目录下。Maven从远程仓库down下来的构件,都存放在本地仓库中。打开conf/setting.xml:

<setting>
  <localRepository>local repository</localRepository>
</setting>

远程仓库:运行Maven时,Maven所需要的任何构件都是从本地仓库获取的。但如果本地仓库没有,它就会尝试从远程仓库中下载构件到本地仓库,然后使用本地仓库中的构件。(私服一般是指公司内部使用的仓库。如果Maven无法连接到远程仓库,将无法正常构建项目。) 在pom.xml中配置如下:

<!-- 配置远程仓库 -->
<repositories>
<repository>
<id>jboss</id>
<name>JBoss Repository</name>
<url>http://repository.jboss.com/maven2/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
<checksumPolicy>warn</checksumPolicy>
</snapshots>
<layout>default</layout>
</repository>
</repositories>

镜像:如果仓库X可以提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像。换句话说,任何一个可以从仓库Y获取的构建,都在够从它的镜像中获取。举个例子,http://maven.net.cn/content/groups/public/是中央仓库http://repo1.maven.org/maven2/在中国的镜像,由于地理位置,该镜像往往能够提供比中央仓库更快的服务,因此,可以配置Maven使用该镜像来代替中央仓库。编辑settings.xml文件。

<mirrors>

    <mirror>

    <id>maven.net.cn</id>
  
    <name>oneof the central mirrors in china</name>     <url>http://maven.net/content/groups/public/</url>     <mirrorOf>central</mirrorOf>   </mirror> </mirrors>

关于镜像的一个更加常用的做法是结合私服。由于私服可以代理任何外部公共仓库(包括中央仓库),因此,对于组织内部的maven用户来说,使用一个私服地址就等于使用了所有需要的外部仓库,这可以将配置集中到私服,从而简化了maven本身的配置。在这种情况下,任何需要的构建都可以从私服获得,私服就是所有仓库的镜像仓库。我们可以配置这样的一个镜像,如下配置:

<mirrors>

    <mirror>

        <id>internal-repository</id>

        <name>internalrepository manager</name>

        <url>http://192.168.1.112:8081/nexus/content/groups/public</url>

        <mirrorOf>*</mirrorOf>

    </mirror>

</mirrors>                 

需要注意的是,由于镜像仓库完全屏蔽了被镜像仓库,当镜像仓库不稳定或者停止服务的时候,maven仍将无法访问被镜像仓库,因而将无法下载构建。

Maven的常用功能的更多相关文章

  1. mybatis常用功能总结

    mybatis-plus常用功能总结-以User表为例 1.数据库 id name age email create_time update_time version deleted 1 mary 2 ...

  2. WebStorm 常用功能的使用技巧分享

    WebStorm 是 JetBrain 公司开发的一款 JavaScript IDE,使用非常方便,可以使编写代码过程更加流畅. 本文在这里分享一些常用功能的使用技巧,希望能帮助大家更好的使用这款强大 ...

  3. AVA正则表达式4种常用功能

    正则表达式在字符串处理上有着强大的功能,sun在jdk1.4加入了对它的支持 下面简单的说下它的4种常用功能: 查询: String str="abc efg ABC";  Str ...

  4. [转]WebPack 常用功能介绍

    概述 Webpack是一款用户打包前端模块的工具.主要是用来打包在浏览器端使用的javascript的.同时也能转换.捆绑.打包其他的静态资源,包括css.image.font file.templa ...

  5. FastReport.Net 常用功能总汇

    一.常用控件 文本框:输入文字或表达式 表格:设置表格的行列数,输入数字或表达式 子报表:放置子报表后,系统会自动增加一个页面,你可以在此页面上设计需要的报表.系统在打印处理时,先按主报表打印,当碰到 ...

  6. python3 字符串与列表常用功能

    一.字符串常用功能 1. capitalize(),将字符串的首字母变成大写,其余全部置为小写:如果字符串中有多个单词,也只是将第一个单词的首字母置为大写:例: >>> name = ...

  7. matlab进阶:常用功能的实现,常用函数的说明

    常用功能的实现 获取当前脚本所在目录 current_script_dir = fileparts(mfilename('fullpath')); % 结尾不带'/' 常用函数的说明 bsxfun m ...

  8. WebPack常用功能介绍

    概述 Webpack是一款用户打包前端模块的工具.主要是用来打包在浏览器端使用的javascript的.同时也能转换.捆绑.打包其他的静态资源,包括css.image.font file.templa ...

  9. JavaScript 常用功能总结

    小编吐血整理加上翻译,太辛苦了~求赞! 本文主要总结了JavaScript 常用功能总结,如一些常用的JS 对象,基本数据结构,功能函数等,还有一些常用的设计模式. 目录: 众所周知,JavaScri ...

随机推荐

  1. 墨菲定律:当你觉得一个地方可能有bug,那么这个地方就会有bug----顺带了解下Tomcat那少有人注意的localhost.log

    一.问题概述 题目有点长,但应该值得后端java们了解下有点小坑的localhost.log,让我长话短说. 博主是搞java后端的.后台是很简单的spring mvc + spring框架. 今天测 ...

  2. 简易扩展Visual Studio UnitTesting支持TestMethodCase

    NUnit的TestCaseAttribute可以简化大量的测试参数输入用例的编写,如果基于Visual Studio Unit Test Project开发则默认没有类似的功能,看一段对比代码: p ...

  3. Android 源码下载,国内 镜像

    AOSP(Android) 镜像使用帮助 https://lug.ustc.edu.cn/wiki/mirrors/help/aosp 首先下载 repo 工具. mkdir ~/bin PATH=~ ...

  4. 剖析Elasticsearch集群系列之一:Elasticsearch的存储模型和读写操作

    转载:http://www.infoq.com/cn/articles/analysis-of-elasticsearch-cluster-part01 1.辨析Elasticsearch的索引与Lu ...

  5. Canvas裁剪Clip和Region、RegionIterator

    extends:http://blog.csdn.net/lonelyroamer/article/details/8349601 裁剪功能由Canvas提供的一系列的clip...方法 和quick ...

  6. Node.js 文件系统fs模块

    Node.js 文件系统封装在 fs 模块是中,它提供了文件的读取.写入.更名.删除.遍历目录.链接等POSIX 文件系统操作. 与其他模块不同的是,fs 模块中所有的操作都提供了异步的和 同步的两个 ...

  7. npm使用报错解决办法

    在使用脚手架工具进行项目搭建的时候,很多时候会用到npm ,最近用npm的时候遇到一个错误: 'CALL "I:\Program Files\nodejs\\node.exe" & ...

  8. pandas numpy处理缺失值,none与nan比较

    原文链接:https://junjiecai.github.io/posts/2016/Oct/20/none_vs_nan/ 建议从这里下载这篇文章对应的.ipynb文件和相关资源.这样你就能在Ju ...

  9. 04 用户个人信息和二次开发django的文件存储系统

    用户的个人信息的前端页面如下: 业务逻辑分析 从上图中可以看出,需要后端传送的数据有,用户的名字和练习的地址,和最近的浏览记录. 用户的名字和联系的地址可以通过地址表(adress)中获得,地址表可以 ...

  10. 7.18 进程池方式的 socket

    2018-7-18 22:05:28  笔记都做完了 睡觉睡觉!!!明天早起!发现python慢慢深入变得很强大,很好玩!!! 进程池版本的socket 更加优化了,比多进程版本的效率更高 seerv ...