Hadoop SpringApplication dictionary testing solr pagination Seajs NEJ Web Uploader HammerJS jq第一个子元素 oracle删除字段 datetimepicker赋值 abaqus是什么软件 spark大数据处理技术 mac上传文件到linux linuxmysql启动命令 python加法 python使用教程 python创建数据库 python怎么下载安装 python做界面 java教程 java的substring java配置 java数组排序 java线程停止 java网络编程实例 登录界面html 倒计时计时器 刷声望 xflow 小程序开发工具下载 spss20安装教程 php小数点保留2位 大数据之路 s10截屏 微信超额20万怎么办 cad打散 js压缩图片
当前位置: 首页 > 学习教程  > 编程语言

Maven基础学习

2020/9/19 14:40:28 文章标签:

MAVEN 入门

Maven 翻译为"专家"、“内行”,是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理.

  • 教程参考: https://www.imooc.com/learn/443
  • 笔记参考: https://blog.csdn.net/qq_44850489/article/details/106742812
  • Maven仓库坐标查询: https://mvnrepository.com/

1. 安装

  1. 进入maven管网,下载想用的maven版本.

  2. 系统变量中新建:环境变量名:M2_HOME 变量值:指向刚刚下载文件的安装目录

  3. 修改系统变量中的path: 在最后加入 ;%M2_HOME%/bin

  4. 验证是否成功:打开命令提示符 输入mvn -v出现版本信息就是安装完成

  5. 修改本地仓库路径: 打开maven安装目录 %M_2HOME%/conf/settings.xml 修改localRepository标签

    <localRepository>D:/Respository/LocalRespository</localRepository>

  6. 设置镜像在%M_2HOME%/conf/settings.xml 修改<mirrors>标签内容

  7. <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>*</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror> 
    

2. 新建maven项目

  1. 建立maven约定好的文件目录结构[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CLVTNT1n-1600497503169)(C:\Users\x00580500\Documents\笔记图片\maven目录结构.PNG)]

  2. 编写pom.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.imooc.maven01</groupId>
  <artifactId>maven01-model</artifactId>
  <version>0.0.1SNAPSHOT</version>

  <dependencies>
	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<version>4.10</version>
	</dependency>
  </dependencies>
</project>

其中

<groupId></groupId> 	//这个的值就是项目名
<artifactId></artifactId>  //这个的值是模块名
<version></version> 	//这个是版本

<!--[依赖组]-->
<dependencies>
     <!--[单个依赖]-->
     <dependency>
         <groupId> junit </groupId>
         <artifactId>junit</artifactId>
		<version>4.10</version>
	</dependency>
 </dependencies>
  1. 新建src\test\java\com\imooc\maven01\model\HelloWorldTest.java 文件
package com.imooc.maven01.model;
import org.junit.*;
import org.junit.Assert.*;
public class HelloWorldTest{
	@TestTest
	public void testHello(){
		Assert.assertEquals("Hello World",new HelloWorld().sayHello());
	}
}
  1. 新建src\main\java\com\imooc\maven01\model\HelloWorld.java 文件
package com.imooc.maven01.model;

public class HelloWorld{
    public String sayHello(){
        return "Hello World";
    }
}
  1. 打开命令行 cd到项目的根目录下 然后输入:mvn compile 。对项目进行编译

  2. 测试是否ok : 在项目根目录下输入 mvn test

  3. 打包项目的方法: cd到文件根目录中 输入: mvn package

  4. target 文件夹中生成了项目 的编译文件和 jar包

3. maven常用命令

  • mvn -v 查看maven版本
  • mvn compile编译当前项目至taget文件夹

当compile编译时,用到依赖包就去pom.xml中查找,找到后去本地仓库中查找,放到项目中,如果没有就去maven的中央仓库中查找下载到本地仓库,然后引用。

  • mvn test 运行当前项目测试类
  • mvn package 将当前项目打包至taget文件夹
  • mvn clean 删除target目录,如自解码文件和测试报告
  • mvn install 将本项目编译的jar包安装到本地仓库中

在其它项目引入时需要在pom.xml中指定坐标

<dependency>
		<groupId>com.imooc.maven01</groupId>
		<artifactId>maven01-model</artifactId>
		<version>0.0.1SNAPSHOT</version>
</dependency>

4. maven自动创建目录骨架

使用archetype插件

mvn archetype:generate (第一次加载依赖会很慢)

版本选1.1

Define value for property 'groupId': 						com.imooc.maven03     	//组织名,公司网站的反写+项目名
Define value for property 'artifactId': 					maven03-service			//项目名-模块名		
Define value for property 'version' 1.0-SNAPSHOT: : 		1.0.0SNAPSHOT			//版本号
Define value for property 'package' com.imooc.maven03: : 	com.imooc.maven03.service	//代码所在的包名

或者

mvn archetype:generate -DgroupId=com.imooc.maven03 -DartifactId=maven03-service -Dversion=1.0.0SNAPSHOT 
-Dpackage=com.imooc.maven03.service

5. 坐标和仓库

坐标:在maven中每一个插件都可以成为构件 ,每个构件的位置就是坐标(地址)
下面这个被称为基本坐标

<groupId>com.imooc.maven01</groupId>
<artifactId>maven01-model</artifactId>
<version>0.0.1SNAPSHOT</version>

本地仓库和远程仓库
maven的lib目录下的 maven-model-builder jar包里面的pom-4.0.xml 是超级pom,所有的maven项目都会继承这个pom.xml

里面有个url就是maven的中央仓库地址

镜像仓库:中央仓库都是位于国外的,有时访问会出现问题。而镜像仓库就是位于国内的中央仓库

在标签中添加标签 中*表示对所有仓库进行换源

<mirror>
      <id>central</id>
      <mirrorOf>*</mirrorOf>
      <name>Private Public Nexus Mirror.</name>
      <!-- http://rnd-itlab.huawei.com:8081/nexus/content/groups/public/ -->
        <url>http://w3cloudnkg-sit1.huawei.com/ccloud/nexus/content/groups/public/</url>    
</mirror>

<mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>
<mirror>

6. IDEA集成maven

File > New > Project > Maven > Create from archetype > maven-archetype-quickstart

在右侧集成Maven可视化工具

7. maven生命周期

maven包含三个生命周期

  • clean 清理项目
  • default 构建项目
  • site 生成项目站点

clean; compile; test; package; install

同一个生命周期中执行后面阶段时会自动执行其前置阶段

clean 清理项目
	pre-clean 执行清理前的工作
	clean 清理上一次构建生成的所有文件
	post-clean 执行清理后的文件
	
default	构建项目
	compile>test>package>install
	
site 生成项目站点
	pre-site
	site 生成项目的站点文档
	post-site
	site-deploy 发布生成的站点到服务器上

8. maven常用元素介绍

常用元素

<project> 约束信息
<modelVersion> 指定当前pom的版本
<groupId>       com.imooc.maven03     	//组织名,公司网站的反写+项目名
<artifactId>    maven03-service			//项目名-模块名		
<version> 	    1.0.0SNAPSHOT			//版本号 大版本号+分支版本号+小版本号   snapshot快照 alpha内部测试 beta公测 release稳定 GA正式发布
<package>   	com.imooc.maven03.service	//代码所在的包名
<packaging>  		//默认是jar 也可设置成 war zip pom
<name> 			项目描述名
<url>			项目地址
<description>	项目描述
<developers>
<orgnization>

<dependencies>
	<dependency>
		<groupId>
		<artifactId>
		<version>
		<type>
		<scope>
		<optional>设置依赖是否可选
		<exclusions>排除依赖传递列表
			<exclusion>

<dependencyManagement>
	<dependencies>
		<dependency>s
<build>
	<plugins> 插件列表
		<plugin>
			<groupId>
			<artifactId>
			<version>
<parent> 对父模块的继承
<modules> 指定多个模块进行编译
	<module>

9. maven 依赖范围

标签可用来指定依赖生效范围

compile : 默认范围 编译测试运行都有效

provided : 测试编译有效

runtime: 测试和运行有效

test: 测试范围有效

system: 编译和测试有效 与本机系统相关联 难移植

import: 导入的范围 只使用在dependencyManagement中 表示从其他的pom中导入dependecy的配置

三种classpath

1, 编译

2, 测试

3, 运行

10. 设置maven默认jre依赖

conf>settings.xml

<profile>
		<id>jdk-1.8</id>
		<activation>
			<activeByDefault>true</activeByDefault>
			<jdk>1.8</jdk>
		</activation>
		<properties>
			<maven.compiler.source>1.8</maven.compiler.source>
			<maven.compiler.target>1.8</maven.compiler.target>		<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
		</properties>
	</profile>

11. 依赖冲突

当同时依赖了同一个jar包的不同版本,发生依赖冲突

  1. 短路优先
A->B->C->X

A->D->X(优先)
  1. 路径相同时 先声明的优先引入

12. 聚合和继承

12.1 聚合

当有多个maven项目需要同时用maven管理时,

可新建一个项目, aggeration ,让他将bge, nage, shanji一起编译发布.需要将的jar改为pom.

  <groupId>com.imooc.maven01</groupId>
  <artifactId>maven01-model</artifactId>
  <version>0.0.1SNAPSHOT</version>
  <packaging>pom</packaging>

并且在pom.xml中的标签中添加项目

当编译时 依次对标签中的项目编译打包

<modules>
	<module>../hongxing-bge</module>
	<module>../hongxing-nage</module>
	<module>../hongxing-shanji</module>
</modules>

当编译时 依次对以上项目编译打包

12.2 继承

像JAVA一样.我们可以将项目中相同的部分提取出来,放到一个新建的父类中

(eg. 当多个项目同时依赖相同的jar包时)

新建parent父类maven项目 并将每个项目都含有的junit放入其中,父类项目不会加载此jar包依赖, 版本号可以定义至标签中后续使用${属性名}方式引用.也需要将父类的改为pom

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <junit.version>3.8.1</junit.version>
</properties>

<dependencyManagement>
  <dependencies>
	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<version>${junit.version}</version>
	</dependency>
  </dependencies>
</dependencyManagement>

子类修改

1. 继承的依赖删除版本号(version)标签和范围(scope)标签
2. 在<parent>标签中引入父类坐标

本文链接: http://www.dtmao.cc/news_show_200132.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?