Maven


前言

在传统的Java项目开发过程中,如果当前项目依赖很多第三方JAR包,我们就需要去网上载,容易遗漏、难以解决jar包之间的依赖关系也难以进行版本的管理。

maven是什么?

maven是1个java项目资源的管理工具。

maven有2大功能:

对内,当我们需要jar包的时候,maven可以自动去网络上的中央仓库下载指定版本的jar包资源、保存到本地maven仓库,供当前maven项目使用。

对外,当别人需要当前maven项目时,maven可以把当前maven项目打包成jar包资源,存储到本地maven仓库,对外供其他maven项目使用。

1.maven相关术语

本地仓库:maven软件在本地电脑存储第三方资源的位置。

云仓库:当maven在本地仓库中没有发现对应资源时,会自动去公网的云仓库中下载。

资源坐标:URL地址是可以让浏览器定位1个唯一资源,资源坐标是maven仓库中资源唯一定位地址,资源坐标必须唯一。

2.项目的概念

当项目比较庞大、复杂的时候我们无法使用1个java文件去完成开发,于是我们把可以实现同一类功能的java文件存放到同1个文件夹下,因此形成了java项目的概念。

为了便于不同程序员进行沟通,我们规范了java项目中目录结构体系,诞生了javase项目结构体系,为了提升开发效率,我们又引入了IDE工具(IDEA),可以直接帮我们快速创建1个java se项目,我们只需要在项目中写代码,不需要手工创建项目的目录结构。

3.传统项目的类型

java se项目:用于开发java项目的目录结构体系,该项目结构体系是给JDK工具来看的。

java ee项目: 是一个web项目,该项目的运行不仅需要JDK支持,还需要得到服务器容器(Tomcat)的支持。

4.maven项目

maven项目是maven可以识别的项目,maven项目分为以下三类。

POM:

WAR类型:相当于javaEE项目

JAR类型: 相当于javaSE项目

5.maven项目、javase和javaee项目的关系

maven是项目资源管理工具,只在开发阶段使用maven做项目资源管理,不参与项目的运行。

虽然maven创建的项目结构和JavaSE和JavaEE项目结构完全不同,但是殊途同归,3中项目结构在编译之后是相同的。

使用maven

1.下载maven

2.maven目录结构

3.测试maven是否安装成功

C:\Users\13220>mvn -v
Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T19:57:37+08:00)
Maven home: D:\maven\bin\..
Java version: 1.8.0_40, vendor: Oracle Corporation
Java home: D:\JDK8
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 8.1", version: "6.3", arch: "amd64", family: "dos"

4.配置maven本地仓库位置

<localRepository>D:/maven_packages/m2/repositorylocalRepository>

5.配置maven云仓库位置

 配置为国内阿里云maven仓库地址

 <mirrors>
    <mirror>
        <id>alimavenid>
        <name>aliyun mavenname>
        <url>http://maven.aliyun.com/nexus/content/groups/public/url>
        <mirrorOf>centralmirrorOf>
    mirror>
  mirrors>

6.配置maven编译时使用的JDK版本

在配置完maven的jdk版本之后,maven会自动去网络上下载相应的JDK版本。

在项目开发阶段:maven项目编译时不会调用本地的JDK。

在项目运行阶段:但是当maven项目编译完成后,运行阶段会使用本地的JDK。

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

7.IDEA集成maven

7.pom文件

每一个maven项目都有1个pom文件,我们可以在这个pom文件中声明当前项目需要的第三方依赖和插件的资源坐标。

<?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/xsd/maven-4.0.0.xsd">

    
    <modelVersion>4.0.0modelVersion>
    
    <groupId>com.mingdegroupId>
    <artifactId>01_maven_jarartifactId>
    <version>1.0version>
    
    <properties>
        <junit.version>4.13.1junit.version>
    properties>
    
    <dependencies>
        <dependency>
            <groupId>com.mingdegroupId>
            <artifactId>02_maven_warartifactId>
            <version>1.0version>
        dependency>
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>${junit.version}version>
            <scope>testscope>
        dependency>
    dependencies>

    <build>
        <plugins>
            <plugin>
                


            plugin>
        plugins>
    build>
project>

maven项目打成jar包

1.pom.xml文件配置打包插件

    <plugin>
                <artifactId>maven-assembly-pluginartifactId>
                <configuration>
                    <appendAssemblyId>falseappendAssemblyId>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependenciesdescriptorRef>
                    descriptorRefs>
                    <archive>
                        <manifest>
                            
                            <mainClass>com.mingde.JdbcDemo1mainClass>
                        manifest>
                    archive>
                configuration>
                <executions>
                    <execution>
                        <id>make-assemblyid>
                        <phase>packagephase>
                        <goals>
                            <goal>assemblygoal>
                        goals>
                    execution>
                executions>
            plugin>
        plugins>
pom.xml

2.指定jar包执行的入口

参考