黑马程序员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不可传递 -->