maven基础概念学习1

 

1.maven是什么?

百度百科:

Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具

2.maven的作用?

构建、文档、报告、依赖、scms、发布、分发,可以方便的编译代码、进行依赖管理、管理二进制库等等。

3.maven的好处?

目前我使用下来的好处

     1.关于项目构建   很清晰,我目前的项目分的比较简单 project-pom,project-intf,project-service,project-web,project-web-in

       project-pom 是父类pom,存了一些配置文件(开发,测试,生产),server的配置文件tomcat,统一tomcat配置

       project-intf  第三方接口交互

       project-service 系统dao,service

       project-web 前台

       project-web-in 后台 

        以前没用maven前台和后台共用service,要写2套拦截,现在单独的项目,单独的拦截,分的很清晰

   2.关于文档  暂时没用到

   3.关于报告  暂时没用到

   4.关于依赖 maven自动会帮你下载关联的jar包-source包,这点很好,之前如果自己放到lib下,假设,spring-mvc需要3个        包,需要自己一个一个去下,现在直接依赖spring-mvc,系统自动下载其他的jar,包括source.jar

    5.关于发布  未用maven之前,因为生产、测试、开发环境 数据库配置、图片存储、文件存储、接口都不一样,所以每次打        包都需要手动改,每次发布配置文件都有可能出错,用了maven profile之后,只需要mvn package -P dev 不同的环境        就ok

    6.关于编译    通过指定maven插件的complier版本,可以指定项目的编译,运行环境,例如我指定pom的jdk为1.6,那继          承他的几个子项目都是这个版本,统一开发、编译环境

    7.关于archetype 这个我个人比较喜欢,可以实现基础框架,类似代码生成器,可以把基础的配置,环境生成好

    

下面总结一下,maven的具体一些概念

    1.maven的坐标 GAV

   groupId: 定义当前maven项目所属的实际项目,maven项目和实际项目不一定是一对一的关系,比如springframework,对应的maven项目有很多,例如spring-core,spring-context等

   因此,一个项目往往会被划分为很多模块。groupId通常域名相反,比如 org.springframework 下面有个spring项目,那groupId定义为org.springframework.spring,域名是

  spring.springframework.org

artifactId:该元素定义的是实际项目中的一个maven项目或者模块,推荐的是使用实际项目作为前缀,比如spring-webmvc

version:版本号。

packaging:包的类型,一般都是jar,也可以是war之类的。如果不填,默认就是jar。

nameurl,一个是名称,一个是maven的地址。主要就是上面的几个参数。


maven的安装,不写了,很简单


关于maven的配置文件,我把默认的备份,将我用到的整理如下:

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

<!--本地仓库-->
<localRepository>d:/soft/maven/rep/m2</localRepository> 

<!--镜像-->
<mirrors>
    <mirror>
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>     
      <url>http://localhost:8081/nexus/content/groups/public/</url>
    </mirror>     
  </mirrors>  

<!--本地nexus的用户名 密码-->
  <servers>
  <server>    
     <id>releases</id>    
     <username>admin</username>    
     <password>admin123</password>    
   </server>    
   <server>    
     <id>snapshots</id>    
     <username>admin</username>    
     <password>admin123</password>    
   </server>
   </servers>

  
  <profiles>
    <profile>
      <id>nexus</id>
      <repositories>
        <repository>
          <id>nexus</id>
          <name>Nexus</name>
          <url>http://localhost:8081/nexus/content/groups/public/</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>nexus</id>
            <name>Nexus</name>
            <url>http://localhost:8081/nexus/content/groups/public/</url>
            <releases><enabled>true</enabled></releases>
            <snapshots><enabled>true</enabled></snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>

<!--启用名称为nexus的私服 -->
  <activeProfiles>
    <activeProfile>nexus</activeProfile>
  </activeProfiles>
</settings>

maven的仓库只有两大类:1.本地仓库 2.远程仓库,在远程仓库中又分成了3种:2.1 中央仓库 2.2 私服 2.3 其它公共库

1.本地仓库,顾名思义,就是Maven在本地存储构件的地方。

注:maven的本地仓库,在安装maven后并不会创建,它是在第一次执行maven命令的时候才被创建

maven本地仓库的默认位置:无论是Windows还是Linux,在用户的目录下都有一个.m2/repository/的仓库目录,这就是Maven仓库的默认位置

如何更改maven默认的本地仓库的位置:这里要引入一个新的元素:localRepository,它是存在于maven的settings.xml文件中

1.1 更改配置用户范围的本地仓库:先在/.m2/目录下创建settings.xml文件,然后在~/.m2/settings.xml,设置localRepository元素的值为想要的仓库地址

2. 远程仓库

2.1 说到远程仓库先从 最核心的中央仓库开始,中央仓库是默认的远程仓库,maven在安装的时候,自带的就是中央仓库的配置

在maven的聚合与继承中我们说过,所有的maven项目都会继承超级pom,具体的说,包含了下面配置的pom我们就称之为超级pom

  1. <repositories>  

  2.     <repository>  

  3.       <id>central</id>  

  4.       <name>Central Repository</name>  

  5.       <url>http://repo.maven.apache.org/maven2</url>  

  6.       <layout>default</layout>  

  7.       <snapshots>  

  8.         <enabled>false</enabled>  

  9.       </snapshots>  

  10.     </repository>  

  11.   </repositories>  

私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的Maven用户使用。当Maven需要下载构件的时候,它从私服请求,如果私服上不存在该构件,则从外部的远程仓库下载,缓存在私服上之后,再为Maven的下载请求提供服务。我们还可以把一些无法从外部仓库下载到的构件上传到私服上。

<mirrorOf>的值为central,表示该配置为中央仓库的镜像任何对于中央仓库的请求都会转至该镜像,用户也可以使用同样的方法配置其他仓库的镜像。另外三个元素id,name,url与一般仓库配置无异,表示该镜像仓库的唯一标识符、名称以及地址。类似地,如果该镜像需认证,也可以基于该id配置仓库认证

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

    1. <settings>  

    2.   ...  

    3.   <mirrors>  

    4.     <mirror>  

    5.       <id>internal-repository</id>  

    6.       <name>Internal Repository Manager</name>  

    7.       <url>http://localhost:8081/nexus/content/groups/public/</url>  

    8.       <mirrorOf>*</mirrorOf>  

    9.     </mirror>  

    10.   </mirrors>  

    11.   ...  

    12. </settings>  

该例中<mirrorOf>的值为星号表示该配置是所有Maven仓库的镜像,任何对于远程仓库的请求都会被转至http://localhost:8081/nexus/content/groups/public/

maven 基础记录完了



有问题,联系我 91559999或者[email protected]


你可能感兴趣的:(maven,ArcheType,nexus)