黑马程序员Maven全套教程,maven项目管理从基础到高级,Java项目开发必
一、Maven项目结构
pom.xml
------------------------------------------------------------------------------------------
<?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</groupId>
<artifactId>projext-java</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<optional>true</optional>
</dependency>
</dependencies>
</project>
----------------------------------------------------------------------
二、Maven项目构建
mvn compile #下载插件到本地Maven创库,编译代码(第一次编译会多一个文件夹

clean #清理
test #测试,日志报告 ./target/surefire-reports/
package #打包源文件为 .jar。执行以上命令。
install #安装到本地的Maven仓库,
三、Maven插件创建工程
●创建工程(在空目录创建工程)
mvn archetype: generate
-DgroupId={project-packaging}
-Dartifact Id=(project-name}
-DarchetypeArtifactId=maven-archetype-quickstart
-DinteractiveMode=false
●创建java工程(缺少resources文件夹)
mvn archetype:generate -DgroupId=com.itheima -DartifactId=java-project -DarchetypeArtifactId=maven-archetype-quickstart -Dversion=0.0.1-snapshot -DinteractiveMode=false
●创建web工程(缺少java文件夹)
mvn archetype:generate -DgroupId=com.itheima -DartifactId=web-project -
DarchetypeArtifactId=maven-archetype-webapp -Dversion=0.0.1-snapshot -
DinteractiveMode=false
四、依赖管理
1.依赖传递
<!-- 依赖传递
1.路径优先,就近原则
2.声明优先,在相同层级被依赖时,先配置的生效
3.特殊优先,同级配置相同资源的版本,后置覆盖优先(依赖重复但是版本不同时
对子类不显示,不继承-->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<!-- 对子类不显示,不继承-->
<optional>true</optional>
<scope>test</scope>
</dependency>
</dependencies>
2.排除依赖
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<!-- 对子类不显示,不继承-->
<optional>true</optional>
<scope>test</scope>
<!-- 主动排除依赖的资源-->
<exclusions>
<exclusion>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
3.依赖范围
<!-- 依赖范围
1.main文件夹范围
2,test测试程序范围
3.package指令范围
依赖范围模式
1.compile ( 1,2,3 例如:log4j
2.test ( 2 例如:junit
3.provided( 1,2 例如:servlet-api 服务器内置,打包会冲突
4.runtime ( 3 例如:jdbc
-->
<scope>test</scope>
4.依赖范围传递性
<!-- 依赖范围的传递性
1.compile,runtime可传递
2.test,provided不可传递
-->

