Maven的使用

Maven简介

Maven来自于犹太语,意思是知识的积累,Maven可以使用小段代码描述项目的构建,快速构建项目。

在我看来Maven主要作用有如下两点

1、用于管理依赖Jar包,在没有Maven之前做项目都需要先把Jar包下载到本地,然后放到项目中,如果不是web项目还需要创建lib文件夹,并且选择Build path。当项目所依赖的jar包过于庞大时,不利于项目的构建,Maven可以使用简单的代码配置自动下载jar包并放到自己项目中进行管理。

2、规定项目规范以及配置相关组件,在没有maven之前,项目文件名称没有规范,而在maven项目中会创建src/main/java,src/main/test 存放专门的代码。

Maven项目创建步骤

这里主要使用工具IDEA创建Maven项目,当然小伙伴们使用eclipse或者Myeclipse也可以

1,下载maven

2,修改配置文件

其实配置文件主要修改的地方是localRepository属性,改属性指定jar包下载后的存放位置
在这里插入图片描述
3,IDEA配置Maven(eclipse或者Myeclipse部分版本需要下载插件)
在这里插入图片描述

在这里插入图片描述
配置完成后就可以创建maven文件,如果没有配置的话默认是下载到C盘

1、创建普通Maven java项目

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在项目中如果需要添加依赖jar包的话就可以直接在pom文件中配置就可以下载相关jar包
,例如我需要使用springjar包,首先去maven依赖查询网站上搜索jar包,网站地址:https://mvnrepository.com/
在这里插入图片描述
选择合适的版本直接复制到自己pom文件中即可
在这里插入图片描述
在这里插入图片描述
编写完成后Maven自动会检查自己的本地仓库(也就是刚才填写的那个jar包地址)中是否存在改jar包,不存在的话去maven的中央仓库进行对应jar的下载,并且把相关依赖jar包都下载下来在这里插入图片描述
本地仓库展示如下:
在这里插入图片描述
jar包的文件位置是pom文件中 groupId+artifactId+version,下载jar包的时候可能因为网络问题,jar包下载错误,这时候配置文件pom处会报错标红,可以选择删除本地jar包文件夹重新下载jar包

2、创建Maven Web项目

创建Maven的web项目和普通java项目一样,只不过需要使用maven插件创建
在这里插入图片描述
创建完成后如下
在这里插入图片描述
刚创建完成没有存放java代码的文件夹,所以需要创建文件夹存放对应代码,
在这里插入图片描述
刚创建完成后发现无法创建类,不用着急,修改文件属性就好,点击file按钮,选择project struct…,然后按照顺序执行就好,sources用于存放java,resources存放相关资源文件
在这里插入图片描述
最后使用Tomcat配置使用就好

Maven常用标签

modules:模块,用于指定项目中其他模块名称,主要用于创建聚合项目使用。
parent:继承,类似于java中extend,用于依赖的复用

<parent>
    <artifactId></artifactId>
    <groupId></groupId>
    <version></version>
</parent>

packaging:打包的方式,普通java项目是jar,如果是聚合项目为pom,如果是web项目则是war
properties:定义一个或多个maven属性,用${}取值,主要用于一些版本号,依赖jar包都需要传入版本号,为方便统一修改,先定义好,后面需要用的时候再改,并在需要用的时候使用

<properties>
    <junit.version>4.1</junit.version>
</properties>
<dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
    </dependency>

也可以使用properties指定POM文件中对应属性的值

${project.build.sourceDirectory}:项目的主源码目录,默认为src/main/java/
${project.build.testSourceDirectory}:项目的测试源码目录,默认为src/test/java/
${project.build.directory} : 项目构建输出目录,默认为target/
${project.outputDirectory} : 项目主代码编译输出目录,默认为target/classes/
${project.testOutputDirectory}:项目测试主代码输出目录,默认为target/testclasses/
${project.groupId}:项目的groupId
${project.artifactId}:项目的artifactId
${project.version}:项目的version,与${version} 等价
${project.build.finalName}:项目打包输出文件的名称,默认为${project.artifactId}-${project.version}

dependencies/dependency:定位依赖jar包
scope:指定依赖使用的范围,一共有5个值
1,、compile (编译范围)compile是默认的范围;如果没有提供一个范围,那该依赖的范围就是编译范围。编译范围依赖在所有的classpath 中可用,同时它们也会被打包。
2、provided (已提供范围)provided 依赖只有在当JDK 或者一个容器已提供该依赖之后才使用。例如, 如果你开发了一个web 应用,你可能在编译 classpath 中需要可用的Servlet API 来编译一个servlet,但是你不会想要在打包好的WAR 中包含这个Servlet API;这个Servlet API JAR 由你的应用服务器或者servlet 容器提供。已提供范围的依赖在编译classpath (不是运行时)可用。它们不是传递性的,也不会被打包。
3、runtime (运行时范围)runtime 依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如,你可能在编译的时候只需要JDBC API JAR,而只有在运行的时候才需要JDBC驱动实现。
4、test (测试范围)test范围依赖 在一般的编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用。
5、system (系统范围)system范围依赖与provided 类似,但是你必须显式的提供一个对于本地系统中JAR 文件的路径。这么做是为了允许基于本地对象编译,而这些对象是系统类库的一部分。这样的构件应该是一直可用的,Maven 也不会在仓库中去寻找它。如果你将一个依赖范围设置成系统范围,你必须同时提供一个 systemPath 元素。注意该范围是不推荐使用的(你应该一直尽量去从公共或定制的 Maven 仓库中引用依赖)。
build:用于项目编译设置,其中可以使用resources标签指定与项目关联的文件在什么位置以及是什么,plugins标签可以指定一些maven的插件

 <build>
    <resources>
        <resource>
            <directory>src/main/java</directory> <!-- 文件地址 -->
            <includes>
                <include>**/*.xml</include>   <!-- 指定那些文件匹配 -->
            </includes>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>false</filtering>
            <includes>
                <include>*.properties</include>
                <include>*.xml</include>
            </includes>
        </resource>
    </resources>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>${sources.plugin.verion}</version>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19</version>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值