当前位置: 首页 > 编程日记 > 正文

maven基础概念学习1

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

相关文章:

php session 二位数组

最普通的用法&#xff1a;一个变量名 $_SESSION[user] 0;echo $_SESSION[user]; 使用数组&#xff1a; $_SESSION[user][a] 1;$_SESSION[user][b] 2;echo $_SESSION[user][a];echo $_SESSION[user][b]; 这样的好处是可以分组可以 $_SESSION[admin][a] 11;$_SESSION[admin][…

「屋漏偏逢连夜雨」,Log4j 漏洞还没忙完,新的又来了

整理 | 郑丽媛、禾木木 出品 | CSDN 这几天&#xff0c;Apache Log4j 2 绝对是众多 Java 程序员提到的高频词之一&#xff1a;由于 Apache Log4j 2 引发的严重安全漏洞&#xff0c;令一大批安全人员深夜修 Bug、打补丁。此次漏洞更是因为其触发简单、攻击难度低、影响人群广泛等…

利用gevent实现异步执行任务

import gevent def task(pid):gevent.sleep(2)print ("task %s done"%pid)def asynchronous():threads [gevent.spawn(task,i) for i in xrange(5)]gevent.joinall(threads)if __name__ __main__:print ("asynchronous")asynchronous()执行结果&#xff…

清理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 …

AI 真的能够理解人类语言吗?

作者 | Melanie Mitchell 译者 | 弯月 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 2011年&#xff0c;IBM 的人工智能系统沃森参加综艺节目《危险边缘》&#xff0c;并获得了冠军&#xff0c;当时他们宣称&#xff1a;“沃森能够理解自然语言的所有歧义和复杂…

【贪心】Google Code Jam Round 1A 2018 Waffle Choppers

题意&#xff1a;给你一个矩阵&#xff0c;有些点是黑的&#xff0c;让你横切h刀&#xff0c;纵切v刀&#xff0c;问你是否能让切出的所有子矩阵的黑点数量相等。 设黑点总数为sum&#xff0c;sum必须能整除(h1)&#xff0c;进而sum/(h1)必须能整除(v1)。 先考虑横行&#xff0…

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

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

这个 AI 模型火上 GitHub 热榜第一,在线修复照片

编译 | 禾木木出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;AI 正在对照片编辑产生重大的影响&#xff0c;但结果是还存在很大分歧。支持者说&#xff0c;人工智能释放了新的艺术历年&#xff0c;减少了创作者花在单调工作上的时间。然而&#xff0c;批评者认为这些…

【我的Android进阶之旅】解决SDK升级到27.0.3遇到的GLIBC_2.14 not found、no acceptable C compiler found in $PATH等问题...

一、问题一&#xff1a;Failed to find Build Tools revision 27.0.3 1.1、问题描述 最近公司的Android项目都要进行SDK升级&#xff0c;目前在本地编译的时候将SDK升级到了27.0.3&#xff0c;本地运行正常&#xff0c;然后在jenkins服务器上跑的时候就会出现异常。异常如下所示…

解析大型.NET ERP系统 设计异常处理模块

异常处理模块是大型系统必备的一个组件&#xff0c;精心设计的异常处理模块可提高系统的健壮性。下面从我理解的角度&#xff0c;谈谈异常处理的方方面面。我的设计仅仅限定于Windows Forms&#xff0c;供参考。 1 定义异常类型 .NET 框架定义很多异常类型&#xff0c;ERP系统中…

内含福利|CSDN 携手字节跳动:云原生Meetup北京站报名热烈启动,1月8日见!

伴随云原生技术的成熟与落地&#xff0c;越来越多框架、中间件等开源项目相继涌现&#xff0c;帮助开发者和企业有效解决业务问题。2022年1月8日&#xff0c;CSDN携手字节跳动基础架构&#xff0c;将在北京举办第四场云原生线下Meetup。在这里&#xff0c;您可以与众多开源技术…

用Thymeleaf在前台下拉列表取值

转自&#xff1a;https://blog.csdn.net/u013600907/article/details/76165748转载于:https://www.cnblogs.com/sharpest/p/8875698.html

PHP使用JSON

JSON 基础 简 单地说&#xff0c;JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串&#xff0c;然后就可以在函数之间轻松地传递这个字符串&#xff0c;或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。这个字符串看起来有点儿古怪&#xff08;稍后会看…

(原创)Python文件与文件系统系列(5)——stat模块

stat模块中定义了许多的常量和函数&#xff0c;可以帮助解释 os.stat()、os.fstat()、os.lstat()等函数返回的 st_result 类型的对象。 通常使用 os.path.is*() 这类函数来测试一个文件的类型&#xff0c;这些方法对同一个文件进行多次测试时&#xff0c;stat()系统调用都是不可…

Azure Neural TTS能让AI语音自然逼真到什么程度?

摘要&#xff1a;微软Azure Neural TTS让AI语音像真人一样富有感情&#xff0c;自然逼真。 Neural TTS&#xff08;神经网络文本转语音&#xff09;是微软Azure认知服务的强大语音合成功能&#xff0c;自推出以来&#xff0c;已被广泛应用于从语音助手、新闻阅读到有声读物创作…

ReentrantLock与synchronized

1、ReentrantLock 拥有Synchronized相同的并发性和内存语义&#xff0c;此外还多了 锁投票&#xff0c;定时锁等候和中断锁等候线程A和B都要获取对象O的锁定&#xff0c;假设A获取了对象O锁&#xff0c;B将等待A释放对O的锁定&#xff0c;如果使用 synchronized &#xff0c;如…

EXT按钮事件

在EXT中&#xff0c;当我们要为按钮点击添加处理function的时候&#xff0c;可以看到一般人的实现分成2类&#xff1a;1.使用onClick: function xx()2.使用handler: function xx()完成后&#xff0c;我们会发现&#xff0c;无论用哪一种实现&#xff0c;再点击按钮时都能触发xx…

浅谈HTTP中Get与Post的区别

Http定义了与服务器交互的不同方法&#xff0c;最基本的方法有4种&#xff0c;分别是GET&#xff0c;POST&#xff0c;PUT&#xff0c;DELETE。URL全称是资源描述符&#xff0c;我们可以这样认为&#xff1a;一个URL地址&#xff0c;它用于描述一个网络上的资源&#xff0c;而H…

达摩院年终预测重磅出炉:AI for Science 高居榜首,2022 十大科技趋势!

整理 | 郑丽媛出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;作为“一所探索科技未知的研究院”&#xff0c;阿里巴巴达摩院成立至今已经四年了。这四年来&#xff0c;达摩院秉持着“探索科技位置&#xff0c;以人类愿景为驱动力&#xff0c;开展基础科学和颠覆式…

TensorFlow——入门基础

TensorFlow原理&#xff1a; TensorFlow使用Graph来描述计算任务,图中的节点被称之为op.一个op可以接受0或多个tensor作为输入,也可产生0或多个tensor作为输出.任何一个Graph要想运行,都必须借助上下文Session.通过Session启动Graph,并将Graph中的op分发到CPU或GPU上,借助Sessi…

EXT iconCls说明

今天学习ext 看examples中的事例&#xff0c;其中有一个地方是这样写的&#xff1a; new ButtonPanel( Icon Only, [{ iconCls: add16 },{ iconCls: add24, scale: medium },{ …

25个好用到爆的一行 Python 代码,建议收藏

作者 | 欣一来源 | Pyhton爱好集中营在学习Python的过程当中&#xff0c;有很多复杂的任务其实只需要一行代码就可以解决&#xff0c;那么今天小编我就来给大家介绍实用的一行Python代码&#xff0c;希望对大家能够有所帮助。1.两个字典的合并x {a: 1, b: 2} y {c: 3, d: 4}将…

【工业串口和网络软件通讯平台(SuperIO)教程】七.二次开发服务驱动

SuperIO相关资料下载&#xff1a;http://pan.baidu.com/s/1pJ7lZWf 1.1 服务接口的作用 围绕着设备驱动模块采集的数据&#xff0c;根据需求提供多种应用服务&#xff0c;例如&#xff1a;数据上传服务、数据请求服务、4-20mA服务、短信服务、LED服务以及OPC服务等。保障数…

usermod命令,用户密码管理和mkpasswd命令

2019独角兽企业重金招聘Python工程师标准>>> usermod 设置扩展组 概念&#xff1a;更改用户属性的一个命令。 用法&#xff1a;usermod [选项] 后面跟你需要操作的内容 [用户名] 选项&#xff1a;-c, --comment 注释 GECOS 字段的新值-d, --home HO…

extjs关于jsonreader

在JavaScript中&#xff0c;JSON是一种非常重要的数据格式&#xff0c;key:value的形式比XML那种复杂的标签结构更容易理解&#xff0c;代码量也更小&#xff0c;很多人倾向于使用它作为EXT的数据交换格式。JsonReader支持分页&#xff0c;与JSON数据对应格式如下&#xff1a;t…

求逆元 - HNU 13412 Cookie Counter

Cookie Counter Problems Link: http://acm.hnu.cn/online/?actionproblem&typeshow&id13412&courseid0 Mean: 将N分为D份&#xff0c;每份不超过X&#xff0c;有多少种分法&#xff1f; analyse: 首先我们想到的是迭代&#xff0c;但是数据太大&#xff0c;…

IEEE 发布年终总结,AI 奇迹不再是故事

编译 | 禾木木 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 2021 年&#xff0c;人工智能奇迹不再只是故事&#xff01; 人工智能正在迅速融入各行各业&#xff0c;IEEE Spectrum 总结了 2021 年 10 篇最受读者欢迎的 AI 文章&#xff0c;按时间排名&#xff0c;…

一则利用内核漏洞获取root权限的案例【转】

转自&#xff1a;https://blog.csdn.net/u014089131/article/details/73933649 目录(?)[-] 漏洞描述漏洞的影响范围漏洞曝光时间漏洞产生的原因漏洞的利用exploit代码分析kernel 最近出了一个新的本地提权安全漏洞CVE-2013-1763&#xff0c;影响范围比较广泛&#xff0c;ubunt…

Ext.data库

Ext.data 库主要包括以下几个类&#xff1a;Ext.data.Store >DataSetExt.data.Record >DataSet.RowExt.data.DataProxy >SqlConnectionExt.data.DataReader >SqlDataAdapter以下分别进行介绍:1.Ext.data.Record可以用来定义一行数据的格式,它有几个重要的属性和方法…

2021年最有用的数据清洗 Python 库

作者 | 周萝卜来源 | 萝卜大杂烩大多数调查表明&#xff0c;数据科学家和数据分析师需要花费 70-80% 的时间来清理和准备数据以进行分析。对于许多数据工作者来说&#xff0c;数据的清理和准备也往往是他们工作中最不喜欢的部分&#xff0c;因此他们将另外 20-30% 的时间花在抱…