三、 Maven工程

1 Maven 的工程类型

1.1 POM 工程 POM 工程是逻辑工程。用在父级工程或聚合工程中。用来做 jar 包的版本控制。 1.2 JAR 工程 将会打包成 jar 用作 jar 包使用。即常见的本地工程 - Java Project。 1.3 WAR 工程 将会打包成 war,发布在服务器上的工程。如网站或服务。即常见的网络工程 - Dynamic Web Project。war 工程默认没有 WEB-INF 目录及 web.xml 配置文件,IDE 通常会显示工程错误,提供完整工程结构可以解决。

2 创建 Maven 项目

补:创建web项目要补齐WEB-INF 跟web.xml文件

2.1 创建步骤 2.1.1 New--> other -->Maven Project

勾选, 创建纯净项目,不应用任何模版

2.2 填写项目信 填写项目信 息

2.3 Maven 项目结构

3 工程关系

3.1 依赖

即 A 工程开发或运行过程中需要 B 工程提供支持,则代表 A 工程依赖 B 工程。在这种 情况下,需要在 pom.xml 文件中增加下属配置定义依赖关系



<dependencies>



3.2 继承

如果 A 工程继承 B 工程,则代表 A 工程默认依赖 B 工程依赖的所有资源,且可以应用B 工程中定义的所有资源信息。被继承的工程(B 工程)只能是 POM 工程。



<project



子工程pom配置文件



<modelVersion>4.0.0



3.3 聚合

当我们开发的工程拥有 2 个以上模块的时候,每个模块都是一个独立的功能集合。比如某大学系统中拥有搜索平台,学习平台,考试平台等。开发的时候每个平台都可以独立编译,测试,运行。这个时候我们就需要一个聚合工程。在创建聚合工程的过程中,总的工程必须是一个 POM 工程(Maven Project),各子模块可以是任意类型模块(Maven Module)。所有聚合工程和聚合模块必须处于同一个组(groupId)中,且聚合工程可以嵌套。

四、 Maven中的常见插件

1 编译器插件

作用:设置jdk版本

1.1pom.xml 配置片段,当前maven项目有效



<build>



1.2 settings.xml 文件中配置全局编译器插件



<profile>



2 Tomcat 管理插件

作用:配置maven内嵌tomcat插件

2.1 本地应用 使用 Tomcat 插件发布部署并执行 war 工程的时候,使用 maven build 功能实现。应用启动命令为: tomcat7:run。命令中的 tomcat7 是插件命名,由插件提供商决定。run 为插件中的具体功能。具体 pom.xml 文件的配置如下:



<build>



远程热部署:

远程热部署是指,在 Tomcat 容器运行过程中,动态实现 war 工程的部署,重新部署功能。具体命令为: tomcat7:deploy 或 tomcat7:redeploy。

pom.xml 文件中的配置



<build>



3 资源拷贝插件

Maven 打包时将指定路径配置文件宝贝到项目中并做打包处理



<build>



五、 Maven 常用命令

1 install 本地安装, 包含编译,打包,安装到本地仓库 编译 - javac 打包 - jar, 将 java 代码打包为 jar 文件 安装到本地仓库 - 将打包的 jar 文件,保存到本地仓库目录中。 2 clean 清除已编译信息。 删除工程中的 target 目录。 3 compile 只编译。 javac 命令 4 deploy 部署。 常见于结合私服使用的命令。 相当于是 install+上传 jar 到私服。 包含编译,打包,安装到本地仓库,上传到私服仓库。 5 package 打包。 包含编译,打包两个功能。

六、 私服

1 什么是私服 私服是一种特殊的远程仓库,它是架设在局域网的仓库服务,私服代理广域网上的远程仓库,供局域网使用。 在企业开发中,私服的建设是有必要的,其好处如下: 1.1 节省资金 节省资金 、 外网带宽 利用私服代理外部仓库之后,对外的重复构件下载便得以简化,降低外网带宽压力。 1.2 加速 Maven 构建 不停地连接请求外部仓库是相当耗时的,但是 maven 的一些内部机制(如快照更新检查)要求 Maven 在执行构建的时候不停地检查远程仓库数据。因此,当项目配置了很多外部远程仓库的时候,构建速度会降低。使用私服解决这问题,因为 Maven 只需要检查局域网内私服的数据时,构建速度便有明显提高。 1.3 部署第三方构件 当某个构件无法从任何一个远程仓库获取怎么办?比如 Oracle 的 JDBC 驱动由于版权原因不能发布到公共仓库中。建立私服后,便可以将这些构件部署到这个内部仓库中,供内部 Maven 项目使用。 1.4 提高稳定性,增强控制 对于远程仓库来说,当外网不可用时,Maven 构建有可能因为依赖没有下载而不可行,搭建并应用私服后,即使没有外网,如果该构件之前被其它人下载过就会存在私服上,此时再次依赖该构件就可以不用连接外网直接就可以从私服上下载到。同时私服软件(nexus)还提供了额外的管理功能。 1.5 降低中央仓库的负荷

2 nexus 私服搭建

2.1 搭建环境 环境:CentOS6.5、JDK7、Sonatype Nexus、Maven(Eclipse 或 MyEclipse) 2.2 搭建步骤 2.2.1 安装 JDK 2.2.1.1 JDK 资源包下载

2.2.1.2 JDK 资源包解压 在 Linux 中安装应用的常用目录为:/opt 或/usr/local 目录。本课件将 JDK 安装到 /usr/local/java 目录中。 解压 JDK 到指定目录: tar -zxvf jdk-7u80-linux-x64.tar.gz -C /usr/local 重命名 JDK 目录: mv /usr/local/jdk1.7.0_80 /usr/local/java 2.2.1.3 环境变量配置



export JAVA_HOME=/usr/local/java
 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
 export PATH=$JAVA_HOME/bin:$PATH



环境变量修改后,可以重启 Linux 实现永久生效;或执行 source /etc/profile 命令,让新修改的环境变量在当前终端中生效。

2.2.2 安装私服 Nexus

2.2.2.2 Nexus 资源包解压

2.2.2.3 检查私服端口和工作目录




Jetty section,Nexus 私服应用是使用 Jetty 提供 web 服务的,下述内容为 Jetty 配置。 application-port=8081 # 私服访问端口 application-host=0.0.0.0 nexus-webapp=${bundleBasedir}/nexus # Nexus 私服 WEB 应用所在位置 nexus-webapp-context-path=/nexus # Nexus 私服 WEB 应用 contextPath

Nexus section Nexus 私服配置信息

nexus-work=${bundleBasedir}/../sonatype-work/nexus # 私服工作目录,即构件保存目录 runtime=${bundleBasedir}/nexus/WEB-INF # 私服 WEB 应用运行目录

2.2.2.4 修改 Nexus

设置访问linux权限,在nexus-2.11.2-03/bin/nexus脚本文件中定义。需要修改的信息如下:

#RUN_AS_USER= #原内容 RUN_AS_USER=root #修改后的内容,代表 Nexus 私服使用 root 用户权限。

2.2.2.5 修改防火墙,开放 Nexus

修改防火墙配置文件,开放 Nexus 私服的访问端口 8081(2.2.2.3 章节内容)。 vi /etc/sysconfig/iptables 增加下述内容: -A INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -j ACCEPT 重新启动防火墙: service iptables restart

2.2.2.6 启动并测试访问

可通过命令检查私服运行状态: /usr/local/nexus/nexus-2.11.2-03/bin/nexus status

也可使用浏览器访问 Nexus 私服 WEB 应用, 访问地址为: http://ip:8081/nexus

3 私服配置

Nexus 默认提供管理用户,用户名为 admin,密码为 admin123。

常用仓库类型为:hosted 和 proxy

设置 proxy 代理仓库(Apache Snapshots/Central/Codehaus Snapshots)准许远程下载。


4 私服应用

要在 Maven 工程中使用私服,需要提供私服配置信息。

4.1 settings.xml


<?xml version="1.0" encoding="UTF-8"?>


4.2 pom.xml 文件


<project


build-deploy命令 上传到私服


七、 Maven 实战

1.创建maven parent工程 pom类型

配置pom文件 jar包注入声明、配置开启插件、所有版本信息等

2.创建聚合工程 Manager pom类型 ,用于统一管理项目。

3在聚合工程上创建Maven Module

3.1创建mgr-pojo jar类型

3.2创建mgr-mapper jar类型

修改pom配置文件,注入pojo、mybatis、mysql、连接池

3.3创建mrg-service jar类型

修改pom注入mapper、spring

3.4创建mgr-controller war类型

修改pom注入service、jsp相关

4.数据库这种建表users

5.controller中框架整合

  • 数据库配置文件 db.properties
  • mybatis配置文件 主要为了配置字分页插件
  • applicationContext-dao.xml
  • applicationContext-service.xml
  • applicationContext-trans.xml
  • springmvc.xml
  • web.xml

6.配置Tomcat插件与资源拷贝插件

  • mgr-Controller 配置文件pom中配置tomcat插件
  • mgr-mapper配置文件pom中配置资源拷贝插件,打包时附带mapper.xml文件

7.run as maven-install 打包项目

clean tomcat7:run 清除并启动tomcat

8.以上完成就可以按mvc分层编写项目代码。