zoukankan      html  css  js  c++  java
  • Maven的常用功能

    一、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仍将无法访问被镜像仓库,因而将无法下载构建。

     

     

     

  • 相关阅读:
    第一章 前言
    《Linux内核设计与实现》CHAPTER18阅读梳理
    《Linux内核分析》第五周 扒开系统调用的三层皮(下)
    《Linux内核设计与实现》CHAPTER5阅读梳理
    《Linux内核分析》第四周 扒开系统调用的“三层皮”
    《Linux内核设计与实现》CHAPTER1,2阅读梳理
    《Linux内核分析》第三周 构建一个简单的Linux系统MenuOS
    《Linux内核分析》第二周 操作系统是如何工作的?
    《Linux内核分析》第一周 计算机是如何工作的?
    毕业设计 之 一 《构建之法》阅读笔记
  • 原文地址:https://www.cnblogs.com/domi22/p/8537786.html
Copyright © 2011-2022 走看看