maven基础

一、 Maven环境搭建

下载安装目录 à 配置环境变量:M2_HOMEPath  à cmd测试配置

 

二、 基本目录结构

src

      -main

         -java

           -package

      -test(测试)

         -java

           -package

      resources(资源文件)

 

POM.xml管理项目(根目录中)

 

Ø 运行后生成的target文件中:classes文件存的是.class字节码文件;surefire-reports生成的是测试报告.

 

三、 基本命令

1、 mvn –v  查看maven版本

2、 mvn compile编译

3、 mvn test 测试

4、 mvn package 项目打包

5、 mvn clean 删除target

6、 mvn install 安装jar包到本地仓库中

 

四、 自动创建目录骨架

archetype插件:mvn archetyoe

1. archetype:generate  按照提示进行选择

2. archetype:generate  -DgroupId=组织名,公司地址犯些+项目名

                  -Darchetype=项目名-模块名

                  -Dversion=版本号

                  -Dpackage=代码所存在的包名

 

五、 坐标和仓库

Ø 坐标:groupId + artifactId + version

Ø 仓库:本地仓库

远程仓库(默认提供全球中央仓库的地址lib/maven-model-builder-3.3.9.jarpom-4.0.0.xml)

仓库资源搜索:http://mvnrepository.com/

Ø 镜像仓库:(地址修改)

conf/settings.xml  mirrors

中提供的示例复制一份

进行配置将镜像映射到国内

Ø 更改仓库位置:

默认存放位置:c:用户/.m2/repository

仓库不要放在c盘中,以防重装系统

修改settings.xml lacalRepository

url要改成斜杠

复制settings.xmlrepo文件中,这样以后更新maven就不用修改settings.xml

 

六、 eclipse中maven的搭建

1、 修改eclipse默认运行jrejdk

Window à preference à java àinstall jre

2、 修改eclipse.inijdk配置进去

3、 运行pom.xml: run as à maven builder

进行compile  package等指令

4、 设置jdk目录

 

七、 生命周期

Ø 三套相互独立的生命周期:

clean 清理项目:pre-clean clean post-clean

default 构建项目(最核心):compile test package install

site 生成项目站点(根据pom.xml生成站点):pre-site site post-site site-deploy

 

不同生命周期的各个阶段是顺序的,且后面的阶段依赖于前面的阶段

,但是并不会触发其他生命周期的任何阶段

: cleancompiletestpackageinstall

在执行package命令时会自动执行之前的:cleancompiletest

 

八、 maven插件引入

Ø 项目在打包时对source插件源码同时进行打包:绑定source插件到default生命周期的package阶段.

Ø Pom.xml中配置引入插件:

  <!-- 引入插件 -->
  <build>
  <plugins>
  <plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-source-plugin</artifactId>
  <version>2.4</version>
  <!-- 绑定插件到package阶段,可随项目一并打包 -->
  <executions>
  <execution>
  <phase>package</phase>
  <!-- 具体使用哪种类型上官网查goal值配置 -->
  <goals>
  <goal>jar-no-fork</goal>
  </goals>
  </execution>
  </executions>
  </plugin>
  </plugins>
  </build>


九、 pom.xml文件讲解(各个标签)

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <!-- 指定pom版本 -->
  <modelVersion>4.0.0</modelVersion>
 
  <!-- 坐标 -->
  <groupId>com.imooc.hi</groupId><!-- 反写公司名+项目名 -->
  <artifactId>hi</artifactId><!-- 项目名 + 模块名 -->
  <!--第一个0标识大版本号,第二个0表示分支版本号,第三个0表示小版本号
  snapshot 快照
  alpha 内部测试
  beta 公测
  GA 正式发布
   -->
  <version>0.0.1-SNAPSHOT</version>
  <!-- 项目默认打包类型:jar war zip pom等 -->
  <packaging>jar</packaging>
 
  <!-- 项目描述名 -->
  <name>hi</name>
  <!-- 项目的地址 -->
  <url>http://maven.apache.org</url>
  <!-- 项目描述 -->
  <description></description>
  <!-- 项目开发人员列表 -->
  <developers></developers>
  
  
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
 
<!-- 依赖列表,包含多个依赖项 -->
  <dependencies>
    <dependency>
    <!-- 依赖项的坐标设置 -->
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope><!-- 依赖范围设置 -->
      <!-- 设置依赖是否可选,默认为false -->
      <optional></optional>
      <!-- 排除依赖传递列表 -->
      <exclusions></exclusions>
    </dependency>
  </dependencies>
  
  <!-- 依赖的管理,里面可以定义多个依赖,但不会引入到实际应用中,定义父类被子类所引用 -->
  <dependencyManagement>
  <dependencies>
  </dependencies>
  </dependencyManagement>
  
  <!-- 引入插件 -->
  <build>
  <plugins>
  <plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-source-plugin</artifactId>
  <version>2.4</version>
  <!-- 绑定插件到package阶段,可随项目一并打包 -->
  <executions>
  <execution>
  <phase>package</phase>
  <!-- 具体使用哪种类型上官网查goal值配置 -->
  <goals>
  <goal>jar-no-fork</goal>
  </goals>
  </execution>
  </executions>
  </plugin>
  </plugins>
  </build>
  
  <!-- 子模块中对父模块pom的继承 -->
  <parent></parent>
  
  <!-- 指定多个模块一起编译  -->
  <modules>
  <module></module>
  </modules>
  
</project>


十、 依赖范围

Ø Maven提供三种classpath:

编译、测试、运行

Ø Scope6个属性:

1、 compile:对于编译、测试、运行三个阶段都有效(默认)

2、 provided:编译、测试时有效(:servletAPI)

3、 runtime:在测试、运行时有效(:jdbc驱动)

4、 test:只在测试时有效(:junit)

5、 system:也在编译、测试时有效(项目依赖本机JAVA_HOME,导致可移植性差)

6、 import:只可在dependencyManagement标签中使用,表示将依赖导入到项目中

 

十一、依赖传递

Ø A依赖B,B又依赖C,所以A依赖C.

 

Ø 配置依赖关系步骤: cpom.xml获取c的坐标 à bpom.xml中根据坐标配置依赖<dependency></dependency> à  先将c进行打包并安装(clean install) à compile b à

Clean install b à  compile a.

 

Ø 这样搭建好之后,a中会有bc两个依赖.

 

Ø 但是,如果a只需要b的依赖,不需要c中的依赖时:(排除依赖)

将对c依赖排除出去:<exclusions></exclusions>

 

十二、依赖冲突

Ø 当a依赖bb依赖c(jar);a又依赖dd也依赖c(jar);像这种依赖于相同构件,应该选择哪个构件的问题.

解决办法:短路优先,先声明先优先

 

十三、聚合和继承

Ø 聚合:

将项目聚合起来统一进行install,新项目中使用<module></module>

<modules>
<module>../hx.bg</module>
<module>../hx.ng</module>
<module>../hx.sj</module>
</modules>

Ø 继承:

将项目中共有的依赖项提取出来放入<dependencyManagement></dependencyManagement>中,作为父类 à 然后在要调用的子类使用<parent></parent>输入父类坐标进行引用

l 父类:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>$(junit-version)</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

l 子类:

<parent>
  <groupId>com.hx</groupId>
  <artifactId>hx.parent</artifactId>
  <version>0.0.1-SNAPSHOT</version>
</parent>


十四、创建基于maven的web项目

Ø 流程:

新建时选择webapp à pom.xml中引入servlet依赖(从中央仓库中找) à 手动创建基本目录结构 à 检查classpath的输出路径:右键项目buildpath /source/Output folder(确保此次输出路径为target/classes!)  à 将项目转化成web项目:项目右键属性/project Facets/选择Dynamic Web Module动态web工程 à 修改部署时的默认配置:项目右键属性/Deployment Assembly(将测试代码文件删除,发布时不需要测试代码remove test相关代码) à web项目搭建成功!

 

Ø package命令导出为war包,部署到web容器(jetty)

中央仓库中找到jetty插件的依赖(将坐标导入<plugin></plugin>)

 

 maven工程部署:


创建基本目录结构(main下创建一个java文件,src下创建与main同级的java文件,创建好的test文件下创建java文件,用于存放测试代码


编译后存放的目标:target/classes




十五、maven热部署:


找到tomcat安装目录 --> conf --> tomcat-users.xml --> 


修改配置(指定tomcat账号密码,localhost:8080/manager/html)
给tomcat配置账号:


  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <user username="admin" password="123" roles="manager-gui,manager-script"/>


将项目部署到tomcat中


(配置多个tomcat)模拟文件服务器


步骤:


改tomcat端口号:
找到tomcat安装目录 --> conf --> server.xml
改三个地方:
1、<Server port=""中的数字改为原数字加一
2、<Connector port=""中的数字改为未被占用的端口
3、<Connector port=""中的数字改为原数字加一


将本机配置好不同端口号的tomcat分别在pom.xml中进行插件声明(中央仓库坐标)


启动本机中在pom.xml中声明好的tomcat


		<plugins>
			<plugin>
				<groupId>org.apache.tomcat.maven</groupId>
				<artifactId>tomcat7-maven-plugin</artifactId>
				<version>2.2</version>
				<configuration>
					<url>http://localhost:8889/manager/text</url>
					<!-- 首页直接显示网页内容 -->
					<path>/</path>
					<server>tomcatserver</server>
					<username>admin</username>
					<password>123</password>
				</configuration>
			</plugin>
		</plugins>


部署指令:run as --> maven builder --> tomcat7:redeploy
redeploy:表示每次都重新部署

配置<path>/</path>
项目访问路径:http://localhost:8889/
未配置<path>/</path>
项目访问路径:http://localhost:8889/项目名

备注:

更新项目:maven/uapdate project

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值