Maven工程

Maven

Maven是什么?

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

Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。

Maven 也可被用于构建和管理各种项目,例如 C#,Ruby,Scala 和其他语言编写的项目。Maven 曾是 Jakarta 项目的子项目,现为由 Apache 软件基金会主持的独立 Apache 项目。

为什么要使用Maven?

Java开发中往往除了核心的JDK之外,我们还要用到大量的第三方jar包,尤其是我们在使用第三方框架开发时,框架本身又要依赖一堆第三方jar包,这些第三方jar包有可能还会依赖别的jar包。我们再手动处理这些依赖时往往效率低下,很头疼。

maven可以很好的解决上面的问题,它能够自动处理级联依赖,还有依赖之间版本兼容问题。

什么场合下会用到maven?

当我们的项目中依赖的第三方jar包很多,关系很复杂时,靠我们手工来处理几乎不可能,那么这种情况下,maven就非常适合了。

怎么使用Maven?

maven下载、安装

  • maven下载

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o2bzW4sH-1571359642734)(maven_download.png)]

  • maven安装

    把上面下载下来的zip包解压到你喜欢的路径下, 最好不要有中文、空格。

  • 环境变量配置

    将mvn加压后的bin目录的路径添加到系统的Path环境变量中。

  • 在IDE中配置maven

    • eclipse中
    • IDEA中

maven仓库

  • 中央仓库

    maven默认的一个远程仓库。可以理解为是一个特殊的远程仓库。

  • 远程仓库

    当首次运行maven项目时,本地仓库中空空如也,maven需要有一个地方下载我们项目中需要的所有依赖包,这个地方就是远程仓库。 一般是各个公司内部会搭建一套远程仓库

  • 本地仓库

    Windows系统,本地仓库默认路径是用户下面的.m2目录下的repository目录,如:C:\Users\John.m2\repository

    本地仓库的作用是将maven联网下载的jar包做缓存,下次用到同样的jar包就优先使用本地仓库中的jar包,不会再次联网下载。

配置阿里云镜像

配置阿里云镜像有两种方式: 修改全局配置文件或者项目中pom.xml

  • 第一种方式:修改全局配置

    在maven安装目录下的conf目录下,找到settings.xml,在标签下添加如下内容:

    <mirror>
        <id>nexus</id>
        <mirrorOf>*</mirrorOf> 
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    </mirror>
    
  • 第二种方式: 修改项目的pom.xml,在其中添加

    <repositories>
        <repository>
            <id>alimaven</id>  
            <name>aliyun maven</name>  
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  
            <releases>  
                <enabled>true</enabled>  
            </releases>  
            <snapshots>  
                <enabled>false</enabled>  
            </snapshots>  
        </repository>
    </repositories>
    

maven构建的生命周期

  • clean

    清理工程编译生成的文件

  • validate

  • compile

    编译工程

  • test

  • package

    打包工程,一般打包格式包括jar、war两种

  • verify

  • install

    将maven工程打包,并安装到本地maven仓库

  • site

  • delpoy

构建周期使用特点:当执行后面的周期时,maven会自动将前面的周期先执行。如执行install周期,实际上maven会先执行compile,再执行package,然后才是install

执行maven构建周期

语法:

mvn 构建周期名称 [-D参数=参数值]

如:

清理编译路径

mvn clean

打包并忽略单元测试

mvn package -Dmaven.test.skip=true

多个构建周期可以一起使用,如下面的清理并打包一起执行

mvn clean package

Maven中配置文件的级别

  • 全局配置文件: %maven_home%/conf/settings.xml
  • 用户级别的配置文件:C:\Users\John\.m2\settings.xml
  • 项目级别配置文件: 项目根路径下的pom.xml

POM文件

在maven工程中有一个很重要的配置文件,pom.xml。这个文件记载了整个工程依赖的所有第三方jar包,和工程中模块的依赖情况。

我们经常需要打交道的就是这个pom.xml文件。

maven工程三要素
  • groupId : 组织id
  • artifactId: 项目的名字
  • version: 版本号

maven工程的三要素决定了我们再添加依赖时,唯一定位到一个jar包。

指定打包方式

通过packaging标签指定: 一般常用的值包括:jar、war

<packaging>jar</packaging>

Maven中的Properties

maven中的properties标签有两种

  • 自定义属性

    通常用来统一管理版本,在 < dependencies > 标签中配置依赖时可以通过${自定义属性}来引用<properties>标签中定义的属性

     <properties>
    	<junit.version>4.12</junit.version>
      </properties>
    
     <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>${junit.version}</version>
          <scope>test</scope>
        </dependency>
    </dependencies>
    
  • 内置属性

    内置属性的定义方式和自定义属性一样,但是不需要我们显示去使用,maven会自动读取。通常用来指定项目编码、编译版本等

    <properties>
      	<!-- 指定源代码文件的编码 -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <!-- 指定测试报告输出编码 -->
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <!-- 编译时的编码 -->
    	<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
        
        <!-- 设置编译版本 -->
        <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>
    
    

依赖管理

在maven的pom.xml中,依赖的管理通过标签来管理,该标签下可以出现一个或多个子标签。

一个标签代表一个依赖。

具体来说配置方式:

<dependencies>
    <!-- 添加c3p0依赖 -->
    <dependency>
    	<groupId>com.mchange</groupId>
    	<artifactId>c3p0</artifactId>
    	<version>0.9.5.2</version>
	</dependency>
</dependencies>

我们添加完上面的配置以后,maven会将c3p0及相关的依赖自动添加到项目的构建路径下

maven中依赖的Scope

maven中的scope有:

  • test
  • compile(默认)
  • runtime
  • provided
  • system
  • import
范围描述
compile该范围表明相关依赖是只在项目的类路径下有效。默认取值。
provided该范围表明相关依赖是由运行时的 JDK 或者 网络服务器提供的。
runtime该范围表明相关依赖在编译阶段不是必须的,但是在执行阶段是必须的。
test该范围表明相关依赖只在测试编译阶段和执行阶段。
system该范围表明你需要提供一个系统路径。
import该范围只在依赖是一个 pom 里定义的依赖时使用。同时,当前项目的POM 文件的 部分定义的依赖关系可以取代某特定的 POM。

在Eclipse中新建maven工程

  1. 新建工程选择maven project
  2. 选择项目骨架模板
    1. JavaSE工程建议选择maven-archetype-quickstart
    2. JavaWeb工程建议选择maven-archetype-webapp
  3. 填写项目三要素: groupId、artifactId、version
  4. Finish

Maven的目录结构

  • JavaSE

    maven_test			// 项目文件夹(根目录)
    	src				
    		main
    			resources	// 存放配置文件
    			java	// 此处放Java源代码
    		test
    			resources	// 存放单元测试配置文件
    			java	// 此处放单元测试源代码
    	target			// 此处存放maven编译、打包生成的文件
    pom.xml				// 核心配置文件
    
    
  • JavaWeb

    maven_test			// 项目文件夹(根目录)
    	src				
    		main
    			resources	// 存放配置文件
    			java	// 此处放Java源代码
    			webapp	// web工程部署根目录
    				WEB-INF
    					web.xml
    				xxx.jsp
    				xxx.html
    				static	// 只是示范,不是maven标准目录结构
    					js
    						xx.js
    					css
    						xx.css
    		test
    			resources	// 存放单元测试配置文件
    			java	// 此处放单元测试源代码
    	target			// 此处存放maven编译、打包生成的文件
    pom.xml				// 核心配置文件
    
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值