框架 day46 Maven

1     maven介绍


    Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具

    Maven主要功能

       1.方便的发布项目信息(更易于项目周期完成:清理、编译、测试、打包、部署)

       2.在多个项目中共享JAR(项目与项目之间依赖,CRM 需要使用SSH的所有jar,就说CRM依赖SSH)

              通过配置文件确定使用的jar,不需要手动的导入jar。

    Maven是一个项目管理工具,它包含:

•     一个项目对象模型 (Project Object Model) 。创建的都是maven项目。每一个maven项目根目录下都有一个配置文件pom.xml

•     一组标准集合(配置信息比较完善)

•     一个项目生命周期(Project Lifecycle)

•     清理、编译、测试、报告、打包、部署

•     一个依赖管理系统(Dependency Management System) ,解决项目与项目(jar包)之间依赖

    约定优于配置的思想

maven规定以什么目录结构存放内容、规定输出到什么位置等。


    Maven提供相应的插件完成项目周期的流程。maven的插件以jar项目体现。

       maven使用插件 和 依赖的项目(jar) 本地默认都没有,但maven不需要我们下载,在使用maven时将自动的下载。maven关键:需要网络。且只需要下载一次。

 

2     maven安装【掌握】

2.1   下载

    网址:http://maven.apache.org/download.cgi      

    版本:3.0.4       

2.2   安装

    解压:apache-maven-3.0.4-bin.zip

      

    目录结构

        


2.3   配置环境变量

    配置系统环境变量MAVEN_HOME  (maven_home)

        

    配置系统环境变量path  (建议:path都是小写) , 注意:使用分号分隔

        

2.4 测试

    方式1:cmd> mvn --version

    方式2:cmd> mvn -v

  

 

3     配置本地仓库【掌握】


    步骤一:本地仓库:maven上网下载所有jar存放的位置成为本地仓库。

    步骤二:解压本地仓库


        


    步骤三:配置文件:%maven_home%/conf/settings.xml

        


    步骤四:修改配置,配置本地仓库

       


4     maven快速入门(了解)

4.1   名词介绍


    Project:任何您想build(构建)的事物,Maven都可以认为它们是工程(项目)。这些工程被定义为工程对象模型(POM,Poject Object Model)。一个工程可以依赖其它的工程;一个工程也可以由多个子工程构成。

    依赖:一个项目需要使用另一个项目

    项目可以被拆分多个模块

    POM:POM(pom.xml)是Maven的核心文件,它是指示Maven如何工作的元数据文件,类似于Ant中的build.xml文件。POM文件位于每个工程的根目录中。 maven取代ant

    GroupId:groupId是一个工程的在全局中唯一的标识符,一般地,它就是工程名。groupId有利于使用一个完全的包名,将一个工程从其它有类似名称的工程里区别出来。

    组,要求:全球唯一,一般情况使用 域名倒写(包名

    Artifact:artifact 是工程将要产生或需要使用的文件,它可以是jar文件,源文件,二进制文件,war文件,甚至是pom文件。每个artifact都由groupId和 artifactId组合的标识符唯一识别。需要被使用(依赖)的artifact都要放在仓库(见Repository)中,否则Maven无法找到 (识别)它们。

    标识,一般情况项目名称

    Dependency:为了能够build或运行,一个典型的Java工程会依赖其它的包。在Maven中,这些被依赖的包就被称为dependency。dependency一般是其它工程的artifact。

    Plug-in:Maven是由插件组织的,它的每一个功能都是由插件提供的。插件提供goal(类似于Ant中的target),并根据在POM中找到的元数据去完成工作。主要的Maven插件要是由Java写成的,但它也支持用Beanshell或Ant脚本写成的插件。

    Repository:仓库。

 

4.2   创建maven java项目


    骨架:maven规定项目的结构,不同项目需要不同的骨架。

mvn archetype:create -DgroupId=com.itheima.maven.quickstart -DartifactId=simple -DarchetypeArtifactId=maven-archetype-quickstart


    注意:使用名称创建项目,必须上网下载一个小文件

   

没上网可能会卡在这里↑     


       上网之后的效果↓

        

 

4.2.1       mavenjava项目结构【掌握】


       pom.xml                             核心配置,项目根下

       src/main/java                       java源码目录

       src/main/resources                java配置文件目录

       src/test/java                          测试源码目录

       src/test/resources                  测试配置目录

       target                                  输出目录


4.3   创建 maven web项目

mvn archetype:create -DgroupId=com.itheima.maven.quickstart -DartifactId=myWebApp -DarchetypeArtifactId=maven-archetype-webapp -Dversion=0.0.1-snapshot


4.3.1       mavenweb项目结构【掌握】


pom.xml                             核心配置

src/main/java                       java源码

src/main/resources                java配置

src/main/webapp                  myeclipse web项目中 WebRoot目录

       |--WEB-INF

              |--web.xml

src/test                                测试

target                                  输出目录


4.4   命令操作


    清理:clean                 --删除target目录

    编译:compile             --src/main/java目录java源码编译生成class (target目录下)

    测试:test                    --src/test/java 目录编译

    打包:package             --生成压缩文件:java项目#jar包;web项目#war包 (压缩格式ZIP)

    安装:install                --将压缩文件上传到本地仓库

    部署|发布:deploy              --将压缩文件上传私服

 

    命令格式#  cmd> mvn  命令

        

    注意:使用命令时,必须在maven根目录下,及可以看到pom.xml


    安装位置:

    

    

    完整生命周期,当执行生命周期后面命令时,前面步骤的命令自动执行

        


4.5   其他命令

•     转换Eclipse工程 (在pom.xml目录执行)

  mvn eclipse:eclipse

  mvn eclipse:clean  //清除Eclipse设置信息

•     转换成IDEA 工程(在pom.xml目录执行)

mvn idea:idea

mvn idea:clean //清除idea设置信息


 clean前后eclipse目录变化



5  myeclipse或eclipse使用Maven插件


5.1   插件安装(了解)

    高版本的myeclipse或eclipse 内置maven插件,建议:使用高版本(myeclipse 10.0)

    低版本eclipse插件安装

    安装eclipse ,将“eclipse-3.7  32位.zip”解压   

    安装插件

        

 

5.2   myeclipsemaven配置【掌握】

5.2.1       配置位置

window→Preferences搜索maven

    eclipse        

    myeclipse      

5.2.2       取消索引下载

 

5.2.3       安装自定义maven

    步骤一:选择   Installations     

    步骤二:选择add添加自己的maven安装路径

        

    步骤三:点击应用 Apply 保存设置

      

5.2.4       配置maven

    步骤一:选择 User Settings         

    步骤二:选择自定义settings.xml 文件

       myeclipse默认配置文件位置:C:\Users\liangtong\.m2\settings.xml(.cache为索引下载位置)


    步骤三:应用 保存设置

 

5.2.5       浏览本地仓库

    步骤一: window/show view/other 搜索maven/ ,打开 “maven repositories” --maven仓库管理视图      

    步骤二:显示本地仓库

        

    步骤三:重写构建索引,右键本地方库选择重新构建索引

        

再点击箭头展开就可以 查看仓库内容了


5.3   maven项目创建

5.3.1       mavenjava项目

    步骤一:选择“maven project” ,如果右键新建没有,通过other获得

        

    步骤二:选择项目位置,默认不变

        

    步骤三:选择骨架quickstart

        

    步骤四:设置项目参数

        

    创建后的结果:需要手动创建源码目录

 

 

5.3.2       mavenweb项目

    步骤一:创建maven项目,同上

    步骤二:选择路径,同上

    步骤三:选择骨架webapp

        

    步骤四:项目参数,同上      

    创建结果

        

 

5.3.3       maven自定义项目【掌握】


5.3.3.1    java项目

    步骤一:选择maven project,同上

    步骤二:创建一个简单项目(跳过骨架选择)

        

    步骤三:设置项目参数,创建java项目

            

    创建java项目结果

       

 

5.3.3.2    web项目

    步骤一:同上

    步骤二:同上

    步骤三:设置项目参数:把packaging 改为war其他同上

    创建web项目结果:WEB-INF没有web.xml和index.jsp需手动导入

        

5.3.3.3    maven项目

    项目参数:把packaging 改为porm其他同上

    创建结果

 maven项目一般没用,在开发中将一个项目拆分成多个项,就需要使用maven项目(pom项目)将其他子项目进行整合。


5.4   myeclipsemaven操作


右键项目选择Run As



6--9 都是快捷方式

       9测试

       8安装

       7关联源码

       6清理

5 maven build...   执行maven命令,等效 mvn

        

4 maven build  5快速的操作

       如果没有操作过,与5相同

       如果操作一次,将直接执行

       如果操作多次,将提供选择框

    myeclipse运行web项目

命令Goals:  tomcat:run

        

6     maven应用详情


6.1   仓库

    分类:本地仓库、第三方仓库、中央仓库

6.1.1       本地仓库

    Maven会将工程中依赖的构件(Jar包)从远程下载到本机一个目录下管理

       通常默认在$user.home/.m2/repository下。        

       例如:C:\Users\liangtong\.m2\repository

    自Maven2以后,构件的存储方式通常是groupId/artifactId/version/*.jar

       例如:D:\java\maven\repository\org\springframework\spring-core\3.2.0.RELEASE

    修改本地库位置:在$MAVEN_HOME/conf/setting.xml文件的

    工程(项目)使用jar包时,优先从本地仓库查询

 

6.1.2       第三方仓库

    第三方仓库,又称为内部中心仓库,也称为私服。

    私服:一般是由公司自己设立的,只为本公司内部共享使用。它既可以作为公司内部构件协作和存档,也可作为公用类库镜像缓存,减少在外部访问和下载的频率。(使用私服为了减少对中央仓库的访问)

       私服可以使用的是局域网,中央仓库必须使用外网。

    私服一般都是有第三方提供,常见私服服务器: Nexus和Artifactory

    私服又可以连接其他公司搭建的私服,例如Jboss中心库、Spring中心库,以随时获得最新版本的第三方构件。      

            例:  从3.0.2 开始spring提供spring私服(spring中心库),不再提供依赖zip包

    注意:连接私服,需要单独配置。如果没有配置私服,默认不使用。

 

6.1.3       中央仓库

    Maven内置了远程公用仓库:http://repo1.maven.org/maven2

        

    这个公共仓库是由Maven自己维护,里面有大量的常用类库,并包含了世界上大部分流行的开源项目构件。目前是以java为主。

    工程依赖的jar包如果本地仓库没有,默认从中央仓库下载

 

 

6.2   POM全景图(了解)

    maven项目都具有pom.xml核心配置文件,POM全景图就是对pom.xml进行整体的描述。

6.2.1       pom关系

 

    1POM Relationships 关系

     Coordinates 坐标:在仓库中唯一标识项目位置三个参数

     <groupId> 组

     <artifactId> 标识

     <version>  版本号

•     示例:仓库\cn\itcast\maven\demojava\0.0.1-SNAPSHOT

•     Aggregation 聚合(多模块): 将项目分解为多个不同模块

   模块拆分:crm_staff、crm_classes、crm_coursetype、...等

   层次拆分:crm_domain(jar)、crm_dao(jar)、crm_service(jar)、crm_web(war)、crm(pom)等

   终端拆分:xxx_web、xxx_wap 等

•     Inheritance 继承: 项目之间继承,实现POM复用。在pom项目共享坐标,共享工具等

•     dependencyManagement:依赖管理,用于版本锁定

•     Dependencies 依赖:一个项目依赖在编译或运行等阶段另一个项目

    在maven通过坐标解决依赖关系。

 

6.2.2       项目信息

 

    2Project Information 项目信息

•     name :项目名称

•     desciption:项目描述

•     url : 访问路径(官方URL)

•     inceptionYear : 项目开始时间

•     licenses:许可

•     developers:开发人员

•     contributors:捐赠者

•     organization:组织或机构名称


6.2.3       构建设置

  

    Build settings  构建配置

•     properties :配置属性。

  例如:配置依赖项目版本等

•     build :构建项目需要配置。

  例如:源码的位置,字节码位置等

•     packaging :打包方式

   jar java项目压缩包

   war web项目压缩包(tomcat可以自动解压)

    pom maven项目,用于多个maven项目的继承

    ear ejb项目

•     reporting :报表

 

6.2.4       构建环境


 

    Build Environment 构建环境

•     environment information 环境信息

  issueManagement 问题管理

 mailingLists 邮件列表

 ciManagement CI管理 (Continuous Integration) 持续集成,自动完成软件代码的编译和测试过程

    Hudson是Jenkins的前身,是基于Java开发的一种持续集成工具,用于监控程序重复的工作

    scm :供应链管理(Supply chain management ) 一种集成的管理思想和方法

•     maven environment maven环境

    prerequisites 使用前提

   repositories 仓库

  pluginsRepositories 插件仓库

   distributionManagement 用于配置分发管理,配置相应的产品发布信息,主要用于发布,在执行mvn deploy后表示要发布的位置(将本地仓库内容 发布到私服)

  profiles 配置多个 profile,自定义配置文件,需要激活(activation)

 

6.2.5       有效POM

    有效POM:管理项目时,最终使用的POM

•     包括:超级POM 和 自定义POM

•     超级POM:maven 提供的pom.xml (特定的内容) ,一般内置在maven中。

•     自定义POM:maven项目自己编写的pom.xml

    eclipse的 pom.xml打开方式:Open With→Maven POM Editot



6.3   依赖

    maven通过坐标描述 项目之间的依赖关系

6.3.1       获得坐标

    方式1:使用网站搜索

       步骤一:百度搜索关键字“maven repository”  打开网站:http://mvnrepository.com/
       步骤二:输入关键字查询获得需要内容,确定需要版本

              http://mvnrepository.com/artifact/org.apache.struts/struts2-core/2.3.15.3

       步骤三:获得坐标

               

<dependency>
       <groupId>org.apache.struts</groupId>
       <artifactId>struts2-core</artifactId>
       <version>2.3.15.3</version>
</dependency>

    方式2:使用本地仓库,通过myeclipse获得坐标

       步骤一:添加依赖,pom.xml文件中,右键

               

       步骤二:获得坐标

               


6.3.2       依赖(坐标)的常见配置

模板代码

<dependency>
      <groupId>……</groupId>
      <artifactId>……</artifactId>
      <version>……</version>
      <classifier>……</classifier>
      <scope>……</scope>
      <type>……</type>
      <systemPath>……</systemPath>
      <optional>……</optional>
      <exclusions></exclusions>
</dependency>

    groupId、artifactId、version是依赖的基本坐标,缺一不可。

    type:依赖的类型,

•     默认为jar,表示依赖的jar包。

•     注意:<type>pom.lastUpdated</type> 使用最后更新描述信息,占位符作用。

    optional:标记依赖是否可选。默认值false

•     A->B->C,那么当A依赖于C时就可以设为可选。

    exclusions:排除传递依赖,解决jar冲突问题。

•     例如:spring bean 和 struts2 spring plugin

    scope:依赖范围

•     compile:编译范围,默认scope,在classpath中存在

•     provided:已提供范围,比如容器提供ServletAPI

•     runtime:运行时范围,编译不需要,接口与实现分离

•     test:测试范围,单元测试环境需要

•     system:系统范围,自定义构件,指定systemPath


6.3.2.1    依赖范围:


        

       compile,默认值,表示编译、测试和运行都需要当前jar。

       test,表示测试时需要使用当前jar。例如:junit 。此处不写也不报错。

       runtime,表示测试和运行时需要当前jar,编译时不用。例如:JDBC驱动。此处不写也不报错。

       provided,表示编译和测试时使用当前jar,运行时不使用。例如:servlet-api、jsp-api等。【必须填写】

              注意:maven默认不使用任何jar,如果需要必须手动导入所有jar包。

              1.开发阶段(myeclipse) -- myeclipse提供需要的jar包

              2.运行阶段(tomcat)-- 运行时有tomcat提供               

              如果使用maven开发,需要手动的导入 servlet和jsp的jar包,此时如果没有设置provided,当前web项目下和tomcat/lib目录下,各有一组jar,在运行时将抛异常。


6.3.2.2    排除依赖(依赖传递)


    例如:spring bean 和 struts2 spring plugin

         

    maven默认配置在前面的优先使用

        


    即使struts2-spring-plugin 配置在前面,也需要使用3.2.0版本。需要struts2-spring 排除依赖(不使用3.0.5依赖)

右键-Exclude

        

       注意:查看代码,如果不符合要求,需要手动的修改。(spring自己添加的排除依赖去掉)

<dependencies>
  	<!-- 使用 struts插件 -->
  	<dependency>
  		<groupId>org.apache.struts</groupId>
  		<artifactId>struts2-spring-plugin</artifactId>
  		<version>2.3.15.3</version>
  		<exclusions>
  			<!-- 排除 struts spring 插件 使用 spring core -->
  			<exclusion>
  				<artifactId>spring-core</artifactId>
  				<groupId>org.springframework</groupId>
  			</exclusion>
  		</exclusions>
  	</dependency>
  	<!-- 使用 spring bean -->
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-beans</artifactId>
  		<version>3.2.0.RELEASE</version>
  	</dependency>
  </dependencies>


6.3.3       依赖调节


    调解原则:

    第一原则:路径近者优先原则

     此处路径近,所以X的版本为2.0

    第二原则:第一声明者优先原则。如果路径相同,第一个声明的优先。

例子:

A->B->C->D->X(1.6)

A->D-X(2.0)

X是A的传递依赖

 

7 SSH整合(使用Maven重写CRM)


1.1.1       创建web项目

1.1.2       导入jar

添加jar依赖

•Spring(context / aspects / orm / test / web)

•Hibernate(core / slf4j / c3p0 / driver / ehcache)

•Struts (core/ spring plugin / json plugin /  )

•Web (servle /jsp / jstl / )

•junit


参考《pom_ssh.xml》 整合基本配置

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.itheima.crm</groupId>
  <artifactId>maven_crm</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <dependencies>
  	<!-- 1.1 spring context -->
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-context</artifactId>
  		<version>3.2.0.RELEASE</version>
  	</dependency>
  	<!-- 1.2 spring aspect -->
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-aspects</artifactId>
  		<version>3.2.0.RELEASE</version>
  	</dependency>
  	<!-- 1.3 spring orm-->
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-orm</artifactId>
  		<version>3.2.0.RELEASE</version>
  	</dependency>
  	<!-- 1.4 spring test-->
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-test</artifactId>
  		<version>3.2.0.RELEASE</version>
  	</dependency>
  	<!-- 1.5 spring web-->
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-web</artifactId>
  		<version>3.2.0.RELEASE</version>
  	</dependency>
  	<!-- 2.1 hibernate core -->
  	<dependency>
  		<groupId>org.hibernate</groupId>
  		<artifactId>hibernate-core</artifactId>
  		<version>3.6.10.Final</version>
  	</dependency>
  	<!-- 2.2 slf4j -->
  	<dependency>
  		<groupId>org.slf4j</groupId>
  		<artifactId>slf4j-log4j12</artifactId>
  		<version>1.7.2</version>
  	</dependency>
  	<!-- 2.3 c3p0 -->
  	<dependency>
  		<groupId>c3p0</groupId>
  		<artifactId>c3p0</artifactId>
  		<version>0.9.1.2</version>
  	</dependency>
  	<!-- 2.4 mysql -->
  	<dependency>
  		<groupId>mysql</groupId>
  		<artifactId>mysql-connector-java</artifactId>
  		<version>5.1.22</version>
  		<scope>runtime</scope>
  	</dependency>
  	<!-- 2.5 ehcache -->
  	<dependency>
  		<groupId>net.sf.ehcache</groupId>
  		<artifactId>ehcache</artifactId>
  		<version>1.5.0</version>
  	</dependency>
  	<!-- 3.1 struts2 core -->
  	<dependency>
  		<groupId>org.apache.struts</groupId>
  		<artifactId>struts2-core</artifactId>
  		<version>2.3.15.3</version>
  	</dependency>
  	<!-- 3.2 struts2 spring -->
  	<dependency>
  		<groupId>org.apache.struts</groupId>
  		<artifactId>struts2-spring-plugin</artifactId>
  		<version>2.3.15.3</version>
  	</dependency>
  	<!-- 3.3 struts2 json -->
  	<dependency>
  		<groupId>org.apache.struts</groupId>
  		<artifactId>struts2-json-plugin</artifactId>
  		<version>2.3.15.3</version>
  	</dependency>
  	<!-- 4.1 servlet api -->
  	<dependency>
  		<groupId>javax.servlet</groupId>
  		<artifactId>servlet-api</artifactId>
  		<version>2.5</version>
  		<scope>provided</scope>
  	</dependency>
  	<!-- 4.2 jsp api -->
  	<dependency>
		<groupId>javax.servlet.jsp</groupId>
		<artifactId>jsp-api</artifactId>
		<version>2.1</version>
		<scope>provided</scope>
	</dependency>
  	<!-- 4.3 jstl -->
  	<dependency>
  		<groupId>javax.servlet</groupId>
  		<artifactId>jstl</artifactId>
  		<version>1.2</version>
  	</dependency>
  	<!-- 5 junit -->
  	<dependency>
  		<groupId>junit</groupId>
  		<artifactId>junit</artifactId>
  		<version>4.9</version>
  		<scope>test</scope>
  	</dependency>
  </dependencies>
</project>

参数《pom_ssh2.xml》 使用properties 管理 版本

 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.itheima.crm</groupId>
  <artifactId>maven_crm</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
  
  <!-- 配置公共信息,配置版本 -->
  <properties>
  	<spring.version>3.2.0.RELEASE</spring.version>
  	<hibnerate.version>3.6.10.Final</hibnerate.version>
  </properties>
  
  <dependencies>
  	<!-- 1.1 spring context -->
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-context</artifactId>
  		<version>${spring.version}</version>
  	</dependency>
  	<!-- 1.2 spring aspect -->
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-aspects</artifactId>
  		<version>${spring.version}</version>
  	</dependency>
  	<!-- 1.3 spring orm-->
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-orm</artifactId>
  		<version>${spring.version}</version>
  	</dependency>
  	<!-- 1.4 spring test-->
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-test</artifactId>
  		<version>${spring.version}</version>
  	</dependency>
  	<!-- 1.5 spring web-->
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-web</artifactId>
  		<version>${spring.version}</version>
  	</dependency>
  	<!-- 2.1 hibernate core -->
  	<dependency>
  		<groupId>org.hibernate</groupId>
  		<artifactId>hibernate-core</artifactId>
  		<version>3.6.10.Final</version>
  	</dependency>
  	<!-- 2.2 slf4j -->
  	<dependency>
  		<groupId>org.slf4j</groupId>
  		<artifactId>slf4j-log4j12</artifactId>
  		<version>1.7.2</version>
  	</dependency>
  	<!-- 2.3 c3p0 -->
  	<dependency>
  		<groupId>c3p0</groupId>
  		<artifactId>c3p0</artifactId>
  		<version>0.9.1.2</version>
  	</dependency>
  	<!-- 2.4 mysql -->
  	<dependency>
  		<groupId>mysql</groupId>
  		<artifactId>mysql-connector-java</artifactId>
  		<version>5.1.22</version>
  		<scope>runtime</scope>
  	</dependency>
  	<!-- 2.5 ehcache -->
  	<dependency>
  		<groupId>net.sf.ehcache</groupId>
  		<artifactId>ehcache</artifactId>
  		<version>1.5.0</version>
  	</dependency>
  	<!-- 3.1 struts2 core -->
  	<dependency>
  		<groupId>org.apache.struts</groupId>
  		<artifactId>struts2-core</artifactId>
  		<version>2.3.15.3</version>
  	</dependency>
  	<!-- 3.2 struts2 spring -->
  	<dependency>
  		<groupId>org.apache.struts</groupId>
  		<artifactId>struts2-spring-plugin</artifactId>
  		<version>2.3.15.3</version>
  	</dependency>
  	<!-- 3.3 struts2 json -->
  	<dependency>
  		<groupId>org.apache.struts</groupId>
  		<artifactId>struts2-json-plugin</artifactId>
  		<version>2.3.15.3</version>
  	</dependency>
  	<!-- 4.1 servlet api -->
  	<dependency>
  		<groupId>javax.servlet</groupId>
  		<artifactId>servlet-api</artifactId>
  		<version>2.5</version>
  		<scope>provided</scope>
  	</dependency>
  	<!-- 4.2 jsp api -->
  	<dependency>
		<groupId>javax.servlet.jsp</groupId>
		<artifactId>jsp-api</artifactId>
		<version>2.1</version>
		<scope>provided</scope>
	</dependency>
  	<!-- 4.3 jstl -->
  	<dependency>
  		<groupId>javax.servlet</groupId>
  		<artifactId>jstl</artifactId>
  		<version>1.2</version>
  	</dependency>
  	<!-- 5 junit -->
  	<dependency>
  		<groupId>junit</groupId>
  		<artifactId>junit</artifactId>
  		<version>4.9</version>
  		<scope>test</scope>
  	</dependency>
  </dependencies>
</project>

*根据maven约定项目结构编写代码

java下不能有配置文件*.hbm.xml应放在resources下


多模块&继承



*多模块


定义一组构建模块的聚集

特点:

       •Maven build父模块的时候,会自动build子模块

       •父模块的packaging必须为POM


*继承

复用配置

可继承的元素 * 可继承的元素

       •groupId, artifactId, version.(groupId/artifactId之一必须重写)

       •dependencies* dependencies

             plugins

       •dependencyManagement

       •pluginManagement

       •Reporting

       •Developers& Contributors

子模块可任意重写父模块配置


8私服搭建


    一般情况使用maven公司,都会搭建自己的私服。

    一般情况目的:使用私服,不需要搭建。

8.4   使用私服

    为所有来自中央仓库的构件安装提供本地缓存

    下载网站

•     http://nexus.sonatype.org/

•     安装版本:nexus-2.7.0-06.war

下载war版本,复制tomcat/webapps安装(tomcat启动自解压war)

启动:bin/startup.bat

 启动tomcat,将在c盘创建sonatype-work目录

       •win7位置:C:\Users\当前用户\sonatype-work\nexus

8.6   nexus目录结构

    位置:C:\Users\Administrator\sonatype-work\nexus

8.6.1       安装目录结构

 

 

8.6.2       索引目录结构

 

 

8.6.3       存储目录

 

 

8.7   nexus配置(无法上网的配置)

将ctx拷贝到C:\Users\Administrator\sonatype-work\nexus\indexer\central-ctx目录

将本地仓库D:\java\maven\repository复制到C:\Users\Administrator\sonatype-work\nexus\storage\central目录


8.8   访问

访问URL

       •http://localhost/nexus-2.7.0-06/

 默认账号

       •用户名: admin

       •密码: admin123

8.9   发布到私服(上传)

8.9.1       配置账号和密码

修改settings.xml

       <server>
           <id>releases</id>
           <username>admin</username>
           <password>admin123</password>
   </server>
       <server>
           <id>Snapshots</id>
              <username>admin</username>
           <password>admin123</password>
   </server>

releases 发布版对应一个URL:http://localhost:8080/nexus-2.7.0-06/content/repositories/releases/

Snapshots 测试版对应一个URL:http://localhost:8080/nexus-2.7.0-06/content/repositories/snapshots/

8.9.2       确定当前项目发布配置信息

修改当前 pom.xml

  <distributionManagement>
    <repository>
        <id>releases</id>
        <name>Internal Releases</name>
        <url>http://localhost:8080/nexus-2.7.0-06/content/repositories/releases/</url>
    </repository>
    <snapshotRepository>
        <id>Snapshots</id>
        <name>Internal Snapshots</name>
        <url>http://localhost:8080/nexus-2.7.0-06/content/repositories/snapshots/</url>
    </snapshotRepository>
</distributionManagement>


8.9.3       测试发布

deploy 发布

命令:
mvn deploy

8.10 从私服获得内容(下载)


8.10.1     配置镜像

修改settings.xml配置镜像,理解就相当于是过滤器,拦截器原本请求路径

	<mirror>
		<id>nexus</id>
		<mirrorOf>*</mirrorOf>
		<url>http://localhost:8080/nexus-2.7.0-06/content/groups/public/</url>
	</mirror>


public 表示一组私服仓库组合

        

       分别从私服 发布、测试、第三方、中央获取,如果没有在从外网中央获得


8.10.2     配置自定义 profile

<profile>
        <id>nexus</id>
        <repositories>
            <repository>
         	        <id>central</id>
        	        <url>http://repo1.maven.org/maven2/</url>
        	        <releases><enabled>true</enabled></releases>
        	        <snapshots><enabled>true</enabled></snapshots>
            </repository>
    	</repositories>
    	<pluginRepositories>
            <pluginRepository>
        	      <id>central</id>
         	      <url>http://repo1.maven.org/maven2/</url>
         	      <releases><enabled>true</enabled></releases>
        	      <snapshots><enabled>true</enabled></snapshots>
            </pluginRepository>
        </pluginRepositories>
</profile>



8.10.3     激活profile

使用profile需要先在配置中激活 

<activeProfiles>
              <activeProfile>nexus</activeProfile>
</activeProfiles>


  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值