maven基础概念学习1

news/2024/7/7 19:31:35

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

 

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。

name和url,一个是名称,一个是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或者jdk2010@163.com


转载于:https://my.oschina.net/u/1186493/blog/490962


http://lihuaxi.xjx100.cn/news/244608.html

相关文章

webpack 最简打包结果分析

原文链接&#xff1a;https://ssshooter.com/2019-02... 现在的 webpack 不再是入门噩梦,过去 webpack 最让人心塞的莫过于配置文件&#xff0c;而 webpack4 诞生随之而来的是无配置 webpack。 使用 webpack4&#xff0c;至少只需要安装 webpack 和 webpack cli。所以大家完全可…

第一天

jvm : java vitrual machine,java虚拟机&#xff08;类似sandbox&#xff09;jre : java runtime environment java运行时环境jvm 核心类库.jdk : java development kit ,java开发包jre 工具软件。转载于:https://blog.51cto.com/11306424/1770775

Java面试题汇总及答案2021最新(Java基础含答案下载)

Java面试题汇总及答案2021最新&#xff08;Java基础含答案下载&#xff09; 为大家整理了2021最新的Java面试题及答案下载&#xff0c;这套Java面试题总汇已经汇总了Java基础面试到高级Java面试题&#xff0c;几乎涵盖了作为一个Java程序员在面试中需要掌握或者可能被问到的绝…

com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1169 1024)

需求&#xff1a; 在更改头像的时候报这个错误 解决方案&#xff1a; show VARIABLES like %max_allowed_packet%; 在mysql安装文件目录找到my.conf 重启mysql服务 查看是否修改成功&#xff1a;

清理SQL多余登录信息

服务器列表、登陆帐户、密码等信息都记录在 %AppData%\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin &#xff08;2008&#xff09;%AppData%\Microsoft\Microsoft SQL Server\90\Tools\Shell\mru.dat&#xff08;2005&#xff09;直接删除后重新启动 SSMS …

Java多线程001——一图读懂线程与进程

本博客 猫叔的博客&#xff0c;转载请申明出处前言 本系列将由浅入深&#xff0c;学习Java并发多线程。 一图读懂线程与进程 1、一个进程可以包含一个或多个线程。&#xff08;其实你经常听到“多线程”&#xff0c;没有听过“多进程”嘛&#xff09;2、进程存在堆和方法区 3、…

Java面试题汇总及答案2021最新(序列化含答案)

Java面试题汇总及答案2021最新&#xff08;序列化含答案&#xff09; 为大家整理了2021最新的Java面试题及答案下载&#xff0c;这套Java面试题总汇已经汇总了Java基础面试到高级Java面试题&#xff0c;几乎涵盖了作为一个Java程序员在面试中需要掌握或者可能被问到的绝大部分…

友盟数据—值得手游创业者关注的玩家数据

友盟数据—值得手游创业者关注的玩家数据 你知道“辣妈”是什么游戏的忠诚玩家吗&#xff1f;你知道“大龄玩家”都喜好怎样的游戏&#xff1f;你知道哪类玩家最“多金”&#xff1f;2015年&#xff0c;不仅宅男、宅女们爱玩游戏&#xff0c;辣妈和奶爸们也成了手游行业的主力军…