Maven
-
一个项目从开发到发布的流程
- 编写项目的业务代码
- 编译
- 测试
- 打包
- 发布(部署)
-
maven是apache开源软件基金会下的一款开源项目,使用Java语言编写的一个项目构建软件工具;主要用于管理整个软件开发的生命周期
-
maven的优点
- 屏蔽不同开发工具的项目管理和规范,使不同开发工具之间的项目可以兼容,统一项目规范
- maven可以帮助管理项目的依赖
- maven可以将本地一个项目发布到远程的服务器上
-
安装maven
-
下载maven的安装包,进行解压缩安装,和tomcat安装方式相同
-
初始化环境配置:配置系统变量path
-
命令窗口执行mvn -v查看当前maven版本
-
修改maven配置文件settings.xml
<!-- 给maven指定一个本地仓库的目录 53行左右 --> <localRepository>C:\apache-maven-3.6.3\maven</localRepository> <!-- 阿里云的maven服务器地址 146行左右 --> <mirrors> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>
-
-
Maven中的核心概念
- pom.xml:依赖的坐标,maven会根据坐标的信息到指定的仓库中下载依赖jar
- 仓库:存储依赖jar包的地方,开发人员会通过指定坐标的方式去下载依赖
- 本地仓库:通常是开发人员本机的某个磁盘下的目录,settings.xml中自定义位置
- 远程仓库:maven官方的中心仓库;第三方自己搭建的私服仓库
-
下载依赖过程
- 首先到本地仓库下载
- 本地仓库没有,到远程仓库下载
- 先检查是否配置了第三方的私服仓库,如果配置了到指定私服下载
- 私服没有,则到maven的中心仓库下载
- maven中心仓库没有,则报错
-
pom.xml中坐标的组成,坐标的主要作用是定位一个jar包在仓库中的位置,然后将其下载到项目环境中
<!-- 模型的版本必须是4.0.0 --> <modelVersion>4.0.0</modelVersion> <!-- 去指定当前项目的组织名和项目名以及版本号,当前项目的坐标 --> <groupId>com.hang</groupId> <artifactId>maven-demo1</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <!-- 项目名 --> <name>Maven-01</name> <!-- FIXME change it to the project's website --> <url>http://www.example.com</url> <!-- 当前项目的一些常量配置信息 --> <properties> <!-- 项目构建的编码格式 --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- 编译源码的jdk版本 --> <maven.compiler.source>1.7</maven.compiler.source> <!-- 编译源码目标执行的版本要求 --> <maven.compiler.target>1.7</maven.compiler.target> <!-- 定义一个版本号的常量 --> <junit-version>4.12</junit-version> </properties> <!-- 指定项目需要的依赖坐标信息的位置 --> <dependencies> <!-- 一对deoendency标签,指定一个依赖的坐标,maven会根据指定坐标下载依赖,通常去http://mvnrepository.com网站搜索需要依赖的坐标 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <!-- 用于设置当前的依赖作用范围, test代表仅限于test目录下可以使用 provided指当前依赖期待容器提供,指项目发布后,运行到容器时提供 compile,默认,代表可以在main和test目录下使用,依赖编译期有效 runtime:运行时使用--> <scope>test</scope> </dependency> <dependency> <!-- 组织的名称,通常是组织域名的倒置 --> <groupId>org.apache.struts</groupId> <!-- 项目的名称 --> <artifactId>struts2-core</artifactId> <!-- 依赖版本号 --> <version>2.3.16</version> </dependency> </dependencies> <!-- build中允许我们继承一些maven支持的插件 --> <build> </build>
-
maven中项目目录结构的规范
- maven-demo 项目名
- src/main/java 用于编写开发java源代码的位置
- src/main/resources 用于存放项目的配置文件
- src/text/java 用于编写测试类的位置
- src/text/resources 用于存放测试环境的配置文件
- pom.xml 指定当前项目相关的原始配置信息:如依赖坐标,项目名称等
- target 当项目编译后生成的一些.class存放的目录
- maven-demo 项目名
-
maven构建管理项目的基础命令
- 编译命令:mvn compile 只会对源码进行编译,不包含测试包下的内容
- 测试命令:mvn test 会对项目进行编译,然后自动执行测试类(测试包下的)
- 打包:mvn package 执行打包操作时,会先编译,再测试,然后打包
- 安装:mvn install 编译项目的源码,包括test包下,并自动执行测试、打包,最后将jar包安装到你的本地仓库中,如果其他项目需要通过maven坐标引入当前项目,可以直接从本地仓库引用
- 清除历史编译:mvn clean 清除target目录
使用Myeclipse创建Maven项目
-
配置Myeclipse
- 在Preferences中搜索maven,找到Maven4MyEclipse,取消勾选每次启动自动更新,加快开发工具的启动速度
- Maven4MyEclipse下的Installations,将本地安装的maven关联到Myeclipse,点Add
- Maven4MyEclipse下的User Settings,点击Browse手动选择自己maven中的settings.xml配置文件
-
创建Java SE项目
-
创建Java Web项目
- 引入javaEE基础依赖:servlet、jsp、jstl
-
手动命令安装一个jar包到本地仓库
mvn install:install-file -Dfile=E:\JavaWeb\JDBC\ojdbc5.jar -DgroupId=com.oracle -DartifactId=ojdbc5 -Dversion=5.0 -Dpackaging=jar