一、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. 【C#】浏览器源代码

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  2. Failed to start LSB: Bring up/down networking.

    由于我的虚拟机是从别的机器拷贝过来的,导入新机器后,没有问题,第二天就网络连接不上了,就出现下面的错误 [root@centos ~]# /etc/init.d/network restart Res ...

  3. vs中如何添加库目录、包含目录以及依赖-----转

    在生成时,可能需要首先生成某些项目,以便生成由其他项目使用的可执行代码.使用 “解决方案属性页”对话框 ->“通用属性”->“项目依赖项” 设置当前生成顺序.若要访问此对话框,请在“解决方 ...

  4. ubuntu16.04下安装Eigen

    请输入以下命令进行安装: sudo apt-get install libeigen3-dev 一个库由头文件和库文件组成.Eigen头文件的默认位置在 “usr/include/eigen3” 中. ...

  5. MapReduce实例(数据去重)

    数据去重: 原理(理解):Mapreduce程序首先应该确认<k3,v3>,根据<k3,v3>确定<k2,v2>,原始数据中出现次数超过一次的数据在输出文件中只出现 ...

  6. HDU 1281 - 棋盘游戏 - [二分图最大匹配]

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1281 Time Limit: 2000/1000 MS (Java/Others) Mem ...

  7. 源码 mongod.lock shutdown

    https://github.com/mongodb/mongo/blob/master/src/mongo/db/db.cpp 1. 退出原理 /proc/" << pid 判 ...

  8. 滑雪---poj1088(动态规划+记忆化搜索)

    题目链接:http://poj.org/problem?id=1088 有两种方法 一是按数值大小进行排序,然后按从小到大进行dp即可: #include <iostream> #incl ...

  9. 在mysql Navicat中怎样设置ID自动递增

    1.打开设计表 2.在添加或变更表结构时,把id字段设置为整型,下面的选项就会出现auto increment的选择框,勾选中就可以了.

  10. SQL Server 安装后改动计算机名带来的问题以及解决方法

    USE master GO DECLARE @serverproperty_servername varchar(100), @servername varchar(100) --取得Windows ...