开拓环境
jdk: 1.8
tomcat: 8.5
maven: 3.5.2
eclipse: oxygen.2(4.7.2)
apache公司的开源项目, 是项目构建工具. 用来依赖管理.
maven的好处
利用传统项目开拓CRM项目, 项目大小40多M
同样的项目利用maven开拓, 项目大小100多KB
同样的代码实现的功能都一样, maven如何做到的?
maven项目没有jar包, jar包都在maven仓库中, maven对jar包统一管理.
2 maven的好处如何实现
maven的两大核心:
依赖管理对jar包管理项目构建项目在编码完成后, 对项目进行编译, 测试, 打包,支配等 一系列的命令都通过命令来实现通过maven命令将web项目发布到tomcat
cmd到项目路径中: mvn tomcat:run
3 maven安装, 配置本地仓库
maven程序安装条件, maven是java开拓, 它的运行依赖jdk.
3.1 maven的下载安装
下载解压 apache-maven.zip, 解压路径不要有分外字符
jdk环境变量须要设置: JAVA_HOME
3.2 配置环境变量
系统, 环境变量, 新建,MAVEN_HOME D:\java\apache-maven-3.5.3配置Path
Path 添加%MAVEN_HOME%\bin;
查看maven版本
cmd中mvn -v
3.3 配置本地仓库
maven仓库类型:
本地仓库私服: 存在于局域网内的一台做事器, 存jar包中心仓库: 在互联网上,存放了基本上所有的开源的jar包, 由maven团队掩护配置本地仓库:
找到jar包仓库压缩包将bos_repository.zip解压在D:\java\apache-maven-3.5.3\conf 中修正settings.xml<localRepository>D:\sshenv\bos_repository</localRepository>
4 maven项目标准目录构造
maven-helloworld
src (项目源码)main java (java类)resources (配置文件, spring,Struts2配置文件的存放目录)webapp (页面素材)jspWEB-INFindex.jsptest javaresourcespom.xml (project object modul, maven项目的核心配置文件)target (并不属于maven项目的目录, 是源码编译后的class文件)
5 maven的常用命令
5.1 clean : 清理
将项目根目录下target目录清理掉
cmd到项目路径, mvn clean
5.2 compile : 编译
将项目中的.java文件编译为.class文件
mvn compile
5.3 test : 单元测试
项目根目录下src/test/java 目录下的单元测试都会实行.
单元测试类名哀求: XxxTest.java
mvn test
5.4 package : 打包
web project --> war包
java project --> jar包
将项目打包到target目录
5.5 install : 安装
本地多项目共用一个jar包.
打包到本地仓库
5.6 maven项目的生命周期 (理解)
在maven中存在3套生命周期, 每一套生命周期相互独立, 互不影响
CleanLifeCycle : 清理生命周期cleanDefaultLifeCycle : 默认生命周期compile, test, package, install, deploySiteLifeCycle : 站点生命周期site6 maven整合web项目案例
6.1 配置eclipse中maven环境
配置m2e插件, Mars2版本已经自带maven插件须要配置maven程序Preferences --> Maven --> Installations --> Add.. --> 找到maven的解压路径配置User SettingsUser Settings 设置为D:\java\apache-maven-3.5.3\conf\settings.xml构建索引Window --> show view --> maven repository --> Local Repository(D:\java\maven_repository) --> Rebuild Index6.2 Maven整合Servlet
Maven Project --> 创建普通项目或父工程时
Maven Module --> 创建子模块
6.2.1 创建maven project, 勾选create simple...
创建好的web项目, 有两个缺点
缺失落web.xml, jdk编译版本是1.5 , 在pom.xml中添加插件<!-- 添加项目jdk编译插件 --> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build>
或者修正全局jdk版本
settings.xml文件中的profiles标签下添加
<profile> <id>jdk-1.8</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk> </activation> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> </properties> </profile>
6.2.2 创建Servlet
创建好的Servlet编译报错, 缘故原由是短缺servlet-api.jar
查找依赖
pom.xml --> Dependencies --> Add
注: 如何安装jar包到本地仓库中?
mvn install:install-file -Dfile=d:\tmp\javax.servlet-api-3.0.1.jar -DgroupId=javax -DartifactId=javax-servlet-api -Dversion=3.0.1 -Dpackaging=jar
或利用工具类 InstallJarToMavenRepoUtils.java
6.2.3 依赖范围 (理解)
依赖范围对付编译classpath有效对付测试classpath有效对付运行时classpath有效例子compileYYYspring-coretest-Y-JunitprovidedYY-servlet-api, jsp-apiruntime-YYJDBC驱动systemYY-本地的, Maven仓库之外的类库
添加依赖范围: 默认是compile
provided : 运行支配到tomcat不再须要
如果将servlet-api.jar设置为compile, 打包后包含servlet-api.jar, war包支配到tomcat中存在servlet-api.jar包冲突, 导致运行失落败
办理; pom.xml --> Dependencies --> Properties --> provided
类似的有 jsp-api.jar, 也须要设置为provided
6.2.4 运行maven项目
项目 --> 右键 --> run as --> Maven build...
如果是Debug运行, 选择debug as , 并且须要在Source中添加源码
7 maven观点模型
两个核心:
依赖管理系统 : 对jar包管理项目工具模型 (Project Object Model) : 项目构建 : 通过命令进行项目构建见图片