说点题外话,没想到突然又重拾更新,在这期间学习了java的许多知识,还补充了sql语句,数据库相关的内容,由于时间关系,中间部分的内容都没有做相应笔记和博客,因为sql的语句还有中间补充的那一段知识很大程度上也算是字典类的工具,等到时候用到了或者忘了之后再去仔细查询。
Maven
Maven 介绍
- Maven的定义
- Maven 是一个标准化的Java项目管理和构建工具
- Maven的主要功能
- 提供了标准化的项目结构
- 提供了标准化的构建流程(如:编译,测试,打包,发布)
- 提供了依赖管理机制
Maven 项目结构
a-maven-project
├── pom.xml
├── src
│ ├── main
│ │ ├── java
│ │ └── resources
│ └── test
│ ├── java
│ └── resources
└── target
a-maven-project
是项目名,pom.xml
是项目描述文件,存放java源代码在src/main/java
里面,存放资源文件在src/main/resources
里面,测试源码/测试资源 存放在src/test
里面,所有编译/打包文件都存放在target
目录里面,这就是一个Maven项目的标准目录结构
pom.xml的结构
<project ...>
<modelVersion>4.0.0</modelVersion>
<groupId>com.itranswarp.learnjava</groupId>
<artifactId>hello</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<properties>
...
</properties>
<dependencies>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
</project>
-
可以看到
下面有许多小分支,其中最关键的是三个 通常是公司或者组织的名称 通常是项目的名称 通常是更新迭代的版本
-
一般安装依赖的时候我们也通过这三个变量去确定
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
依赖关系
-
Maven定义了几种依赖关系,分别是
compile
、test
、runtime
、provided
- compile:编译时需要用到该jar包(默认)
- 比如日志依赖 commons-logging
- test:编译测试文件Test时需要用到该jar包
- 比如 JUnit
- runtime:编译时不需要,只有运行时才需要用到
- 比如 MySQL 驱动
- provided:编译时需要用到,但运行时由jdk或者某个服务器提供(类似接口)
- 比如 Servlet API 运行时由 Servlet 服务器内置了相关的jar包,所以运行时并不需要
- compile:编译时需要用到该jar包(默认)
-
Maven会把compile类型的依赖直接放入classpath