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/repository</localRepository>

5.配置maven云仓库位置

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

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

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

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

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

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

 <profiles>
    <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>
  </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.0</modelVersion>
    <!--当前项目模块对外声明的资源坐标-->
    <groupId>com.mingde</groupId>
    <artifactId>01_maven_jar</artifactId>
    <version>1.0</version>
    <!--自定义变量-->
    <properties>
        <junit.version>4.13.1</junit.version>
    </properties>
    <!--引入第三方资源列表-->
    <dependencies>
        <dependency>
            <groupId>com.mingde</groupId>
            <artifactId>02_maven_war</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
<!--引入第三方插件-->
    <build>
        <plugins>
            <plugin>
                <!--插件的资源坐标-->


            </plugin>
        </plugins>
    </build>
</project>

maven项目打成jar包

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

    <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <appendAssemblyId>false</appendAssemblyId>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <!-- 此处指定main方法入口的class -->
                            <mainClass>com.mingde.JdbcDemo1</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>assembly</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
pom.xml

2.指定jar包执行的入口

参考

原文地址:https://www.cnblogs.com/sss4/p/15757996.html