https://mvnrepository.com/search?q=spring

Maven的优势说明

  1. 在传统项目中,创建javaWeb工程,建立目录结构(java源文件存放目录,配置文件存放目录,jsp文件存放目录等)。每个人存放目录的习惯不一样,造成目录的命名,结构等千变万化,没有一个统一的标准
  2. 在传统项目中,开发一个javaWeb工程都会使用框架,主流的框架有ssm,ssh等。框架中包含大量的jar包(例如完整的ssm框架大致就有70个左右的jar),这使得工程难以管理,拷贝较为麻烦。
  3. Maven的优势是
    1. 目录结构标准化
    2. 项目管理起来更加简单,依赖jar包可以通过pom.xml进行管理

例如我们希望javaWeb1,javaWeb2,javaWeb3的工程目录结构化标准化,依赖jar可以通过配置进行管理
可以通过maven进行管理

maven的作用

  1. 管理Jar
  • 增加第三方Jar(commons-fileupload.jar commons-io.jar)
  • jar包之间的依赖关系(commons-fileupload.jar 自动关联所有依赖的jar,并且不会冲突)
  1. 将项目拆分成若干个模块

    maven的概念

    是一个基于Java平台的 自动化构建工具
    make-ant-maven-gradle

1.清理:删除编译的结果,为重新编译做准备。
2.编译:java -> class
3.测试:针对于 项目中的关键点进行测试,亦可用 项目中的测试代码 去测试开发代码;
4.报告:将测试的结构 进行显示
5.打包:将项目中包含的多个文件 压缩成一个文件,用于安装或部署
6.安装:将打成的包,放到 本地仓库。
7.部署:将打成的包,放到 服务器上准备运行。

自动化构建工具maven:将原材料(java,js,css,html,图片)-> 产品(可发布项目)

本地仓库,中央仓库,中央仓库镜像(对中央仓库的分流)
通常下载一个jar依赖,先在本地仓库中下载;如果本地仓库不存在,在联网到中央仓库(镜像)去下载

Maven 的使用

  1. 下载配置maven
  2. 配置JAVA_HOME
  3. 配置MAVEN_HOME
  4. 配置path %MAVEN_HOME%\bin
  5. 验证mvn -v
  6. 配置本地仓库 mvn -v 可以查询到Maven home: /Users/lijunyang/apache-maven-3.6.1的目录,到此目录的conf目录下,vi settings.xml,找到Default: ${user.home}/.m2/repository,在用户根目录中mkdir mvnrep,然后在settings.xml中刚才查找到的地方加入标签元素/Users/lijunyang/mvnrep
  7. 通过命令创建maven项目

    mvn archetype:generate -DgroupId=com.lijunyang.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

    ``` 通过上面命令创建的maven项目,会在当前目录中生成一个my-app的目录 其中-DgroupId=com.lijunyang.app 配置pom.xml的groupId属性值 -DartifactId=my-app 表示目录名称,以及pom.xml的name属性的值 pom.xml文件内容如下
4.0.0 com.lijunyang.app my-app jar 1.0-SNAPSHOT my-app http://maven.apache.org junit junit 3.8.1

/my-app -| pom.xml -| src -| main -| java -| com -| lijunyang -| app -| App.java -| test -| java -| com -| lijunyang -| app -| AppTest.java

  1. 8. 断言测试的编写
  2. ```java
  3. // /my-app/src/main/java/com/lijunyang/app/HelloWorld.java
  4. package com.lijunyang.app;
  5. public class HelloWorld {
  6. public String sayHello(String name) {
  7. return "hello " + name;
  8. }
  9. }
  10. // /my-app/src/test/java/com/lijunyang/app/HelloWorldTest.java
  11. package com.lijunyang.app;
  12. import org.junit.Test;
  13. import static junit.framework.Assert.*;
  14. public class HelloWorldTest {
  15. @Test
  16. public void testHello(){
  17. HelloWorld hello = new HelloWorld();
  18. String result = hello.sayHello("zs");
  19. assertEquals("hello zs", result); // 断言
  20. }
  21. }
  1. 运行命令

执行mvn的常用指令,必须在pom.xml所在目录中执行
第一次执行命令时,会下载命令依赖的基础环境,所以会从中央仓库下载该环境到本地仓库

  • mvn compile; // 编译 只编译main目录中的,会放入target目录中
  • mvn test; // 编译,并执行用例 test目录中的,会放入target目录中

    1. 如果断言未通过,会抛出异常,此功能非常好用
  • mvn clean test; // 编译,并执行测试用例

  • mvn package; // 打包 jar/war,会放入target目录中
  • mvn install; // 将开发的模块 放入本地仓库,供其他模块使用

    1. 打包完成后,会发布到本地仓库 /Users/lijunyang/apache-maven-3.6.1/conf/my-app/pom.xml to /Users/lijunyang/mvnrep/com/lijunyang/app/my-app/1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.pom
  • mvn clean; // 清理,删除target目录,删除编译的文件和目录

  • mvn build; // 编译
  • mvn generator-sources

    maven的注意项

    约定 优于 配置
    硬编码方式:job.setPath(“d:\abc”);
    配置方式:job : conf.xml d:\abc
    约定方式:job : 使用默认值d:\abc

maven约定的目录
main 执行项目 程序功能代码
java目录 java代码
resources目录 资源代码,配置代码
test 测试项目 测试代码
java目录 java代码
resources目录 资源代码,配置代码

  1. -| pom.xml #项目对象模型
  2. -| target
  3. -| src
  4. -| main #执行项目
  5. -| java #java代码
  6. -| com
  7. -| lijunyang
  8. -| model
  9. -| HelloWorld.java
  10. -| resources #资源代码,配置代码
  11. -| test #测试代码
  12. -| java #java代码
  13. -| com
  14. -| lijunyang
  15. -| HelloWorldTest.java
  16. -| resources #资源代码,配置代码

A中某些类,需要使用B中的某些类,则称为A依赖于B
在maven项目中,如果要使用 一个当时存在的Jar或模块,则可以通过 依赖实现 (去本地仓库,中央仓库中去寻找)

  1. <project xmlns="http://maven.apache.org/POM/4.0.0"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  4. http://maven.apache.org/maven-v4_0_0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <!-- 大项目id,常用域名翻转 -->
  7. <groupId>com.lijunyang.app</groupId>
  8. <!-- 项目名 -->
  9. <artifactId>my-app</artifactId>
  10. <packaging>jar</packaging>
  11. <!-- 版本号 -->
  12. <version>1.0-SNAPSHOT</version>
  13. <name>my-app</name>
  14. <url>http://maven.apache.org</url>
  15. <!-- dependencies 依赖项 -->
  16. <dependencies>
  17. <!-- dependency 依赖 -->
  18. <dependency>
  19. <groupId>junit</groupId>
  20. <artifactId>junit</artifactId>
  21. <version>3.8.1</version>
  22. <scope>test</scope>
  23. </dependency>
  24. </dependencies>
  25. </project>

Maven依赖、依赖有效性、Eclipse中使用Maven、生命周期

Maven在编译,测试,运行时项目时,各自使用一套classpath
compile(默认) test provided
编译 yes no yes
测试 yes yes yes
部署 yes no no

在Eclipse中创建maven工程:
1.配置maven:
配置maven版本
配置本地仓库: 设置setting.xml

在Eclipse中配置好pom.xml依赖后,需要maven-update project
package:
resources
compile
test
package

maven 生命周期:
生命周期和构建的关系:
生命周期中的顺序:a b c d e
当我们执行c命令,则实际执行的时a b c

  1. <project xmlns="http://maven.apache.org/POM/4.0.0"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  4. http://maven.apache.org/maven-v4_0_0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <!-- 大项目id,常用域名翻转 -->
  7. <groupId>com.lijunyang.app</groupId>
  8. <!-- 子模块id名 -->
  9. <artifactId>my-app</artifactId>
  10. <packaging>jar</packaging>
  11. <!-- 版本号 -->
  12. <version>1.0-SNAPSHOT</version>
  13. <name>my-app</name>
  14. <url>http://maven.apache.org</url>
  15. <!-- dependencies 依赖项 -->
  16. <dependencies>
  17. <!-- dependency 依赖 -->
  18. <dependency>
  19. <groupId>junit</groupId>
  20. <artifactId>junit</artifactId>
  21. <version>3.8.1</version>
  22. <scope>test</scope>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.springframework</groupId>
  26. <artifactId>spring-context</artifactId>
  27. <version>4.3.7.RELEASE</version>
  28. <exclusions>
  29. <exclusion>
  30. <groupId>org.springframework</groupId>
  31. <artifactId>spring-beans</artifactId>
  32. </exclusion>
  33. </exclusions>
  34. </dependency>
  35. </dependencies>
  36. </project>

通过maven整合多个项目