Maven的下载
下载地址: http://maven.apache.org/.
idea已经整合 **如果c盘没有.m2目录 ,自己手动在cmd窗口中执行mvn命令:
mvn help:system
当我们无法执行该命令时,需要将Maven中的bin文件的安装目录配置到path的环境变量中。**
setting.xml的相关配置
本地仓库
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- 本地仓库配置 -->
<!-- 具体本地仓库位置也就是.m2文件夹中的repository的位置; -->
<localRepository>Z:\000_m\.m2\repository</localRepository>
</settings>
镜像仓库的配置
如果仓库A可以提供仓库B存储的所有内容,那么就可以认为A是B的一个镜像。 例如:在国内直接连接中央仓库(https://mvnrepository.com/)下载依赖,由于一些特殊原因下载速度非常慢。 这时,我们可以使用阿里云提供的镜像http://maven.aliyun.com/nexus/content/groups/public/来替换中央仓库http://repol.maven.org/maven2/。修改maven的setting.xml文件,具体内容如下:
<mirror>
<!-- 指定镜像ID(可自己改名) -->
<id>nexus-aliyun</id>
<!-- 匹配中央仓库(阿里云的仓库名称,不可以自己起名,必须这么写)-->
<mirrorOf>central</mirrorOf>
<!-- 指定镜像名称(可自己改名) -->
<name>Nexus aliyun</name>
<!-- 指定镜像路径(镜像地址) -->
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
jdk的配置
当你的idea中又多个jdk时,我们需要在setting.xml中配置需要编译和运行的jdk
<profile>
<!-- settings.xml中的id不能随便起的 -->
<!-- 告诉maven我们用jdk1.8 -->
<id>jdk-1.8</id>
<!-- 开启JDK的使用 -->
<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>
Maven项目结构
–MavenDemo 项目名 –.idea 项目的配置,自动生成的,无需关注。 –src – main 实际开发内容 –java 写包和java代码,此文件默认只编译.java文件 –resource 所有配置文件。最终编译把配置文件放入到classpath中。 – test 测试时使用,自己写测试类或junit工具等 –java 储存测试用的类 pom.xml 整个maven项目所有配置内容。
pom.xml配置文件的编写
依赖
让工程依赖各种jar包
<dependencies>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.1</version>
<!-- <scope>import</scope> 相当于强制的指定了版本号-->
</dependency>
</dependencies>
这段配置代码之后,在工程中就导入了mabatis3.5.1版本
让子工程依赖父工程
先将父工程双击左侧的install打好jar包 然后在子工程中的pon.xml中添加父工程的坐标
<groupId>org.example</groupId>
<artifactId>MavenDemo</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<!-- 导入父工程的jar包-->
<groupId>org.example</groupId>
<artifactId>MavenDemo</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
这样,子工程就会出现父工程的jar包以及父工程导入的jar包
子工程排除父工程的某些jar包的依赖
<dependencies>
<dependency>
<!-- 导入父工程的jar包-->
<groupId>org.example</groupId>
<artifactId>MavenDemo</artifactId>
<version>1.0-SNAPSHOT</version>
<!--排除父工程的mybatis依赖-->
<!-- <exclusions>-->
<!-- <exclusion>-->
<!-- <groupId>org.mybatis</groupId>-->
<!-- <artifactId>mybatis</artifactId>-->
<!-- </exclusion>-->
<!-- </exclusions>-->
<!-- 父工程在没有<scope>import</scope>,子工程可以自己定义jar包的版本-->
<!-- <version>3.5.1</version>-->
</dependency>
</dependencies>
依赖范围
依赖范围就决定了你依赖的坐标 在什么情况下有效,什么情况下无效:
?compile
这是默认范围。如果没有指定,就会使用该依赖范围。表示该依赖在编译和运行时都生效。
?provided
已提供依赖范围。使用此依赖范围的Maven依赖。典型的例子是servlet-api,编译和测试项目的时候需要该依赖,但在运行项目的时候,由于容器已经提供,就不需要Maven重复地引入一遍(如:servlet-api)
?runtime
runtime范围表明编译时不需要生效,而只在运行时生效。典型的例子是JDBC驱动实现,项目主代码的编译只需要JDK提供的JDBC接口,只有在执行测试或者运行项目的时候才需要实现上述接口的具体JDBC驱动。
?system
系统范围与provided类似,不过你必须显式指定一个本地系统路径的JAR,此类依赖应该一直有效,Maven也不会去仓库中寻找它。但是,使用system范围依赖时必须通过systemPath元素显式地指定依赖文件的路径。
?test
test范围表明使用此依赖范围的依赖,只在编译测试代码和运行测试的时候需要,应用的正常运行不需要此类依赖。典型的例子就是JUnit,它只有在编译测试代码及运行测试的时候才需要。Junit的jar包就在测试阶段用就行了,你导出项目的时候没有必要把junit的东西到处去了就,所在在junit坐标下加入scope-test
?Import
import范围只适用于pom文件中的部分。表明指定的POM必须使用部分的依赖。 注意:import只能用在dependencyManagement的scope里。
继承
如果A工程继承B工程,则代表A工程默认依赖B工程依赖的所有资源,且可以应用B工程中定义的所有资源信息。
被继承的工程(B工程)只能是POM工程(逻辑工程,不要放任何代码)。
注意:在父项目中放在<dependencyManagement>中的内容时不被子项目继承,不可以直接使用
放在<dependencyManagement>中的内容主要目的是进行版本管理。里面的内容在子项目中依赖时坐标只需要填写
<group id>和<artifact id>即可。(注意:如果子项目不希望使用父项目的版本,可以明确配置version)。
聚合
当我们开发的工程拥有2个以上模块的时候,每个模块都是一个独立的功能集合。比如某大学系统中拥有搜索平台,学习平台,考试平台等。开发的时候每个平台都可以独立编译,测试,运行。这个时候我们就需要一个聚合工程。
在创建聚合工程的过程中,总的工程必须是一个POM工程(Maven Project)(聚合项目必须是一个pom类型的项目,jar项目war项目是没有办法做聚合工程的),各子模块可以是任意类型模块(Maven Module)。
聚合包含了继承的特性。
聚合时多个项目的本质还是一个项目。这些项目被一个大的父项目包含。且这时父项目类型为pom类型。同时在父项目的pom.xml中出现表示包含的所有子模块。
总项目:一般总项目:POM项目
总项目里的具体的模块:
编译器的插件
指定jdk版本
<!-- 配置maven的编译插件 -->
<build>
<plugins>
<!--JDK编译插件 -->
<plugin>
<!--插件坐标 -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<!-- -->
<configuration>
<!-- 源代码使用JDK版本-->
<source>1.7</source>
<!-- 源代码编译为class文件的版本,要保持跟上面版本一致-->
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
配置文件的打包
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>***.xml</include>
<include>**
Tomcat的配置
新建一个基于Maven的webapp项目: 建好之后,可以手动按照Maven项目的结构创建缺的部分: 然后在pom.xml配置文件中配置Tomcat
<build>
<plugins>
<!-- 配置Tomcat插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!-- 配置Tomcat监听端口 -->
<port>8080</port>
<!-- 配置项目的访问路径(Application Context) -->
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
双击tomcat:run命令,启动Tomcat: -----------------------------------------------------------------------------------------------------------
感谢您能看到这,谢谢。
不是所有的问题都有答案,也不是所有的答案都有对错。
|