前言
在传统的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
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>
2.指定jar包执行的入口