1.文件结构

image.png

image.png

2.maven仓库

配置阿里云远程仓库

  1. <mirrors>
  2. <id>nexus-aliyun</id>
  3. <mirrorOf>central</mirrorOf>
  4. <name>Nexus aliyun</name>
  5. <url>http://maven.aliyun.com/nexus/content/groups/public</url>
  6. </mirrors>

仓库依赖存储地址,windwos的话要使用/

  1. <localRepository>A:/Tools/server/apache-maven-3.6.3/repository</localRepository>

3.maven命令

image.png

  1. mvn clean 清空target目录下文件
  2. mvn compile 编译成字节码存储只target目录
  3. mvn package 打包
  4. mvn install 安装到本地仓库

4.maven生命周期

image.png

5.maven依赖范围

image.png
scope标签表示test时才执行,默认是compile范围

  1. <scope>test</scope>

6.父子项目依赖传递

image.png
父项目要以pom方式进行打包

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>org.example</groupId>
  6. <artifactId>maven-parent</artifactId>
  7. <packaging>pom</packaging>
  8. <version>1.0-SNAPSHOT</version>
  9. <modules>
  10. <!-- 子项目-->
  11. <module>maven-son</module>
  12. </modules>
  13. <name>maven-parent</name>
  14. <!-- FIXME change it to the project's website -->
  15. <url>http://www.example.com</url>
  16. <properties>
  17. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  18. <maven.compiler.source>1.7</maven.compiler.source>
  19. <maven.compiler.target>1.7</maven.compiler.target>
  20. <spring.version>5.3.4</spring.version>
  21. </properties>
  22. <!-- dependencyManagement只有被子项目引用才会下载依赖-->
  23. <dependencyManagement>
  24. <dependencies>
  25. <dependency>
  26. <groupId>junit</groupId>
  27. <artifactId>junit</artifactId>
  28. <version>4.11</version>
  29. <scope>test</scope>
  30. </dependency>
  31. <dependency>
  32. <groupId>org.springframework</groupId>
  33. <artifactId>spring-core</artifactId>
  34. <version>${spring.version}</version>
  35. </dependency>
  36. </dependencies>
  37. </dependencyManagement>
  38. <build>
  39. <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
  40. </pluginManagement>
  41. </build>
  42. </project>

子项目继承父项目,maven聚合管理,使用父项目的通用依赖与版本

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <parent>
  5. <artifactId>maven-parent</artifactId>
  6. <groupId>org.example</groupId>
  7. <version>1.0-SNAPSHOT</version>
  8. </parent>
  9. <modelVersion>4.0.0</modelVersion>
  10. <artifactId>maven-son</artifactId>
  11. <name>maven-son</name>
  12. <!-- FIXME change it to the project's website -->
  13. <url>http://www.example.com</url>
  14. <properties>
  15. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  16. <maven.compiler.source>1.7</maven.compiler.source>
  17. <maven.compiler.target>1.7</maven.compiler.target>
  18. </properties>
  19. <dependencies>
  20. <dependency>
  21. <groupId>junit</groupId>
  22. <artifactId>junit</artifactId>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.springframework</groupId>
  26. <artifactId>spring-core</artifactId>
  27. </dependency>
  28. </dependencies>
  29. <build>
  30. </build>
  31. </project>

7.私人仓库

image.png
image.png

8.排除依赖

这两个项目都依赖common-logging,导致直接冲突,这个情况就需要排除依赖,排序低版本依赖,因为高版本是向下兼容的

  1. <dependency>
  2. <groupId>commons-beanutils</groupId>
  3. <artifactId>commons-beanutils</artifactId>
  4. <version>1.9.4</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.apache.poi</groupId>
  8. <artifactId>poi</artifactId>
  9. <version>3.5-FINAL</version>
  10. <exclusions>
  11. <exclusion>
  12. <groupId>commons-logging</groupId>
  13. <artifactId>commons-logging</artifactId>
  14. </exclusion>
  15. </exclusions>
  16. </dependency>

image.png
传递依赖
image.png
image.png