目录
-
1 需求
- 实现 SSM 工程构建,规范依赖管理。场景:根据 id 展示商品信息
-
2 准备数据库
- 导入以下语句
-
3 创建一个 maven 工程
- 1) 新建一个 ssm_maven 项目,使用下图选中的骨架
- 2) 填写坐标
-
3) 查看是否使用的自己的私服
- 4) 在 main 目录下新建 java 和 resources 文件夹
- 5) 把 java 和 resources 文件夹转成 source root
- Source roots (or source folders)
- 通过这个类指定一个文件夹,告诉IntelliJ IDEA,这个文件夹及其子文件夹中包含的源代码,可以编译为构建过程的一部分。
- Test source roots (or test source folders; shown as rootTest)
- 这些根类似于源根,但用于用于测试的代码(例如用于单元测试)。测试源文件夹允许您将与测试相关的代码与生产代码分开。
- 通常,源和测试源的编译结果被放置在不同的文件夹中。
- Resource roots (重要:springmvc使用时,web.xml常用配置的classpath所指的位置就是这个设置后的resources包下的位置)
- 用于应用程序中的资源文件(图像、各种配置XML和属性文件等)。在构建过程中,资源文件夹的所有内容都复制到输出文件夹中.
- 类似于源,您可以指定生成资源。您还可以指定输出文件夹中的文件夹,您的资源应该复制到。
- Test resource roots
- (或测试资源文件夹;如roottestresourceij;只有在java模块)是资源文件与您的测试源有关。在所有其他方面,这些文件夹类似于资源文件夹。
- Excluded
- 将文件标记为Excluded目录后,idea就不会为该文件创建索引,全局搜索也不会搜里面的内容,编辑代码不会智能提示,Excluded Folders相当于代码废弃场
- 6) 修改编译版本,在 pom.xml 文件中添加
-
<build> <plugins> <!-- 设置编译版本为 1.8 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version > <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build>
-
- 1) 新建一个 ssm_maven 项目,使用下图选中的骨架
-
4 知识点准备
-
4.1 依赖传递
- 先添加 springmvc 的核心依赖的坐标
-
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.2.4.RELEASE</version> </dependency> </dependencies>
- 会发现出现除了 spring-webmvc 以外的其他 jar。因为我们的项目依赖 spring-webmv.jar,而spring-webmv.jar 会依赖 spring-beans.jar 等等,所以 spring-beans.jar 这些 jar 包也出现在 maven 工程中,这种现象称为依赖传递。从下图中可看到他们的关系:(请注意spring-beans 的版本)
-
4.2 依赖冲突的解决
- 接着添加一个依赖
- 我们会发现这两个 jar 包同时都依赖了 spring-beans
- 但是:
- spring-webmvc 依赖 spirng-beans-4.2.4,
- spring-context 依赖 spring-beans-5.0.2,
- 发现spirng-beans-4.2.4 加入到工程中,而我们希望 spring-beans-5.0.2 加入工程。这就造成了依赖冲突。解决依赖冲突有以下原则:
-
4.2.1 依赖调解原则
- maven 自动按照下边的原则调解:
- 1)第一声明者优先原则
- 在 pom 文件定义依赖,先声明的依赖为准。
- 测试:
- 如果将上边 spring-webmvc 和 spring-context 顺序颠倒,系统将导入 spring-beans-5.0.2。
- 分析:
- 由于 spring-webmvc 在前边以 spring-webmvc 依赖的 spring-beans-5.0.2 为准,所以最终
- spring-beans-5.0.2 添加到了工程中。
- 2)路径近者优先原则
- 例如:还是上述情况,spring-contex 和 spring-webmvc 都会传递过来 spirng-beans,那如果直接把 spring-beans 的依赖直接写到 pom 文件中,那么项目就不会再使用其他依赖传递来的 spring
-