Maven入门教程

Maven入门教程
一、maven简介
Maven是一个项目管理工具
它包含:
一个项目对象模型 (Project Object Model)
一组标准集合
一个项目生命周期(Project Lifecycle)
一个依赖管理系统(Dependency Management System)
用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑
项目结构:
源代码放在src/main/java
源代码的资源文件放在src/main/resources
测试代码放在src/test/java
测试代码的资源文件放在src/test/resources
如下图所示:


pom:
pom作为项目对象模型。通过xml表示maven项目,使用pom.xml来实现。
主要描述了项目:包括配置文件;开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素。
结构详解:
<parent>
......
<!-- 父项目的pom.xml文件的相对路径。相对路径允许你选择一个不同的路径。
默认值是../pom.xml。
Maven首先在构建当前项目的地方寻找父项 目的pom,
其次在文件系统的这个位置(relativePath位置),然后在本地仓库,最后在远程仓库寻找父项目的pom。-->
<relativePath/>
</parent>
<!--项目产生的构件类型,例如jar、war、ear、pom。插件可以创建他们自己的构件类型,所以前面列的不是全部构件类型-->
<packaging>jar</packaging>
<!--SCM(Source Control Management)标签允许你配置你的代码库,供Maven web站点和其它插件使用。-->
<scm>
<!--SCM的URL,该URL描述了版本库和如何连接到版本库。欲知详情,请看SCMs提供的URL格式和列表。该连接只读。-->
<connection>
scm:svn:http://svn.baidu.com/banseon/maven/banseon/banseon-maven2-trunk(dao-trunk)
</connection>
<!--给开发者使用的,类似connection元素。即该连接不仅仅只读-->
<developerConnection>
scm:svn:http://svn.baidu.com/banseon/maven/banseon/dao-trunk
</developerConnection>
<!--当前代码的标签,在开发阶段默认为HEAD-->
<tag/>
<!--指向项目的可浏览SCM库(例如ViewVC或者Fisheye)的URL。-->
<url>http://svn.baidu.com/banseon</url>
</scm>
<resources>
<!--这个元素描述了项目相关或测试相关的所有资源路径-->
<resource>
<!--是否使用参数值代替参数名。参数值取自properties元素或者文件里配置的属性,文件在filters元素里列出。-->
<filtering/>
<!--描述存放资源的目录,该路径相对POM路径-->
<directory/>
<!--包含的模式列表,例如**/*.xml.-->
<includes/>
<!--排除的模式列表,例如**/*.xml-->
<excludes/>
</resource>
</resources>
<!--当filtering开关打开时,使用到的过滤器属性文件列表-->
<filters>
<filter>src/main/resources/filters/db/jdbc-${env}.properties</filter>
<filter>src/main/resources/filters/redis/redis-${env}.properties</filter>
<filter>src/main/resources/filters/rocketmq/rocketmq-${env}.properties</filter>
<filter>src/main/resources/filters/solr/solr-${env}.properties</filter>
<filter>src/main/resources/filters/zookeeper/zookeeper-${env}.properties</filter>
</filters>
<!--项目分发信息,在执行mvn deploy后表示要发布的位置。有了这些信息就可以把网站部署到远程服务器或者把构件部署到远程仓库。-->
<distributionManagement>
<!--部署项目产生的构件到远程仓库需要的信息-->
<repository>
<!--是分配给快照一个唯一的版本号(由时间戳和构建流水号)?还是每次都使用相同的版本号?参见repositories/repository元素-->
<uniqueVersion/>
<id>banseon-maven2</id>
<name>banseon maven2</name>
<url>file://${basedir}/target/deploy</url>
</repository>
<!--构件的快照部署到哪里?如果没有配置该元素,默认部署到repository元素配置的仓库,参见distributionManagement/repository元素-->
<snapshotRepository>
<uniqueVersion/>
<id>banseon-maven2</id>
<name>Banseon-maven2 Snapshot Repository</name>
<url>scp://svn.baidu.com/banseon:/usr/local/maven-snapshot</url>
</snapshotRepository>
<!--部署项目的网站需要的信息-->
<site>
<!--部署位置的唯一标识符,用来匹配站点和settings.xml文件里的配置-->
<id>banseon-site</id>
<!--部署位置的名称-->
<name>business api website</name>
<!--部署位置的URL,按protocol://hostname/path形式-->
<url>
scp://svn.baidu.com/banseon:/var/www/localhost/banseon-web
</url>
</site>
</distributionManagement>
项目坐标:
GAV-->groupid(项目Id,一般为包名),artifacId(项目名称或模块名称),version(项目版本)。maven通过项目坐标来发现项目并产生依赖。
二、maven安装
2.1、下载:
下载地址:http://maven.apache.org/download.cgi#Installation
2.2、解压缩,配置环境变量
2.3、验证-->命令行窗口-->mvn -version。出现如下截图,证明安装成功。


三、maven仓库
中央仓库
配置在org.apache.maven.model.pom4.0.0.xml,maven包中,可以修改远程仓库地址
私有仓库
一般是公司局域网内部搭建的私有服务器,用来存放公司所需jar文件。
搭建步骤:
安装nexus,解压缩
配置环境变量
执行nexus install,将nexus发布成windows服务,控制面板可以看见
修改安装目录/bin/jsw/conf下wrapper.conf,将Set the JVM executable下面的命令路径修改为jdk安装目录\bin\java
使用nexus start启动服务
启动服务后通过浏览器输入:localhost:8080/nexus访问nexus
仓库讲解
hosted--内部项目的发布仓库
3rd part仓库---第三方包发布仓库,这个通常是由内部人员下载之后执行发布上去
release---内部模块中release模块的发布仓库
snashot---发布内部快照模块仓库
proxy---从远程中央仓库寻找数据的仓库
mirror镜像
私有仓库设置
1、更新私有仓库索引或者下载索引,将其拷贝到中央仓库的索引目录中
2、设置镜像
3、配置仓库
本地仓库
个人电脑或开发者电脑,可通过设置setting.xml指定jar文件的目录
项目从本地服务器找,本地找不到去私有服务器找,私有服务器找不到去中央仓库找。

时间: 2024-12-20 20:24:24

Maven入门教程的相关文章

Maven入门教程二----Maven依赖

依赖包查询 通过坐标存储,GAV-groupId,artifacld,version有些网上的仓库自带了,nexus,http://mvnrepository.com传递性依赖依赖范围:依赖的传递性:依赖是会被传递的.A--C,B--A,那么B--C(基于compile范围进行传递).pom.xml中scope如果没有声明,那么默认是compile如果scope的声明为test,那么这个依赖不会传递到另外一个compile包中test:打成war时不会把测试包打进去,也不会传递.编译和打包都不会

Maven入门教程四----分发构件至远程仓库

mvn install 会将项目生成的构件安装到本地Maven仓库,mvn deploy 用来将项目生成的构件分发到远程Maven仓库.本地Maven仓库的构件只能供当前用户使用,在分发到远程Maven仓库之后,所有能访问该仓库的用户都能使用你的构件.我们需要配置POM的distributionManagement来指定Maven分发构件的位置,如下: 1 <project> 2 <distributionManagement> 3 <repository> 4 <

Maven入门教程三----生命周期和插件

生命周期和插件   Maven定义了三套生命周期:clean.default.site,每个生命周期都包含了一些阶段(phase). 三套生命周期相互独立,但各个生命周期中的phase却是有顺序的,且后面的phase依赖于前面的phase. 执行某个phase时,其前面的phase会依顺序执行,但不会触发另外两套生命周期中的任何phase. 如下图: -------------------------------------------------------------------------

Maven入门教程六----常见问题

执行mvn 报错 source-1.5 中不支持 diamond运算符 解决办法: 指定Maven的版本,并且指定Maven使用的jdk版本 maven排除jar中依赖包 有时打包时会存在包冲突情况,比如某些jar中自带了spring相关的包,那么打包的时候就可以显示的将spring相关法的包排除掉. eclipse和maven版本不兼容 报错如下 -Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_

Maven入门教程五----打包非resources下文件

项目中经常会出现一些配置文件或映射文件,并不会放到resources那么如何在打包的时候将这些文件也一并打包呢? 第一种办法: 找到pom.xml中build节点,增加如下配置: 1 <resources> 2 <resource> 3 <directory>src/main/java</directory> 4 <includes> 5 <include>**/*.xml</include> 6 </include

Maven学习系列一5分钟入门教程

Maven是基于项目对象模型的一个Apache开源项目.Maven的主要配置文件pom.xml就是项目模型的意思(Project Oriented Model),它是Apache Ant的衍生扩展. 安装 Maven是一个Java工具,所以你必须首先安装Java所需运行环境. 1.解压apache-maven-3.2.1-bin.zip到你想要安装maven的目录,例如,我解压文件到D:\apache-maven-3.2.1. 2.添加M2_HOME环境变量,(WinKey+Pause)快捷键调

Spring Cloud 入门教程(五): Ribbon实现客户端的负载均衡

接上节,假如我们的Hello world服务的访问量剧增,用一个服务已经无法承载, 我们可以把Hello World服务做成一个集群. 很简单,我们只需要复制Hello world服务,同时将原来的端口8762修改为8763.然后启动这两个Spring Boot应用, 就可以得到两个Hello World服务.这两个Hello world都注册到了eureka服务中心.这时候再访问http://localhost:8761, 可以看到两个hello world服务已经注册.(服务与注册参见Spr

Spring Cloud 入门教程(八): 断路器指标数据监控Hystrix Dashboard

1. Hystrix Dashboard (断路器:hystrix 仪表盘)  Hystrix一个很重要的功能是,可以通过HystrixCommand收集相关数据指标. Hystrix Dashboard可以很高效的现实每个断路器的健康状况. 1). 在Ribbon服务g和Feign服务的Maven工程的pom.xml中都加入依赖 1 <dependency> 2 <groupId>org.springframework.boot</groupId> 3 <art

【转载】maven入门1

学习maven的使用,看到一篇很实用的入门教程(菜鸟级入门) 2007-08-28 14:01:04 标签:maven 职场 休闲 一.前言         早就知道maven 在java 项目的管理方面名声显赫,于是就想着学习掌握之,于是查阅了大量文档.发现这些文档的作者都是java 的大腕,大多都是站在掌握了一定maven 基础的角度上进行介绍,让我这初学者看的云里雾里不知所云.于是又去查看maven 的官方网站,总算是有所了解,但一旦动手实际操作却又雾里看花.唉,没办法,就只有一遍一遍的动