开拓环境

jdk: 1.8

tomcat: 8.5

mavenweb项目indexjspMaven详解上 Angular

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 : 站点生命周期site

6 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 Index

6.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) : 项目构建 : 通过命令进行项目构建

见图片