MavenApache的一款平台的项目管理工具。主要服务基于Java平台的项目。

   ant

 

   Maven 的作用:

构建           编译、单元测试、生成文档、打包部署

 

     依赖管理       管理jar

 

     项目信息管理   项目描述、版本控制系统地之、许可证、缺陷管理系统地址

   核心思想约定优于配置按照Maven的约定,无序手动配置

2 Maven仓库

 

中央仓库:http://mvnrepository.com/

3 Maven坐标

groupId:项目名

    一般格式:组织类型.组织名.项目名

     :org.apache.struts

artifactId:项目的模块名

:struts-core

version:版本

约定格式:主版本.次版本.增量版本-里程碑版本

1.3.4-beta-2

packaging:打包格式。如:jarwar

4 Maven的下载与安装

   下载地址

http://maven.apache.org/download.html

 

前提: 必须安装了JDK

安装: 不需要安装。解压到指定目录,如:E:\apache-maven-3.3.9

配置环境变量:  

   M2_HOME     E:\apache-maven-3.3.9

   PATH        %M2_HOME%\bin

查看配置是否正确 mvn -version  

 

 

 

安装eclipse(MyEclipse)maven插件:

    新版本的IDE工具不需要安装插件自带Maven插件),只需要配置IDE使用本地maven

 

 

5 配置本地仓库

配置Maven使用的本地仓库。当使用Maven首次使用某些jar等资源时,会把相应的jar包下载到配置的本地仓库中使用jar包等资源在本地仓库中存在时,则不需要重新下载,取本地仓库中的资源即可。

配置方式:

E:\apache-maven-3.3.9\conf\settings.xml

 

 

   

5 创建Maven项目

 

 

 

6 Maven项目的目录结构

 

 

 

6.1 POM文件

<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.zrgk.mvn.helloword</groupId>

  <artifactId>mvn_helloworld</artifactId>

  <version>0.0.1-SNAPSHOT</version>

  <packaging>jar</packaging>

 

  <name>mvn_helloworld</name>

  <url>http://maven.apache.org</url>

 

  <properties>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

  </properties>

 

 

 

  <dependencies>

    <dependency>

      <groupId>junit</groupId>

      <artifactId>junit</artifactId>

      <version>4.12</version>

      <scope>test</scope>

    </dependency>

  </dependencies>   

</project>

 

项目依赖什么jar包,就在pom文件中添加对应的<dependency>配置。

具体配置方式,到maven中央仓库网站查看即可。

配置后的jar包将会被下载到指定的本地仓库中。

6.2 java类编写

package com.zrgk.mvn.helloword.mvn_helloworld;

 

public class HelloWorld {

 

public String sayHello(){

 

return "hello world";

}

 

}

6.3 测试类编写(使用Junit)

import org.junit.Test;

public class HelloWorldTest {

@Test

public void testSayHello(){

HelloWorld hw = new HelloWorld();

String result = hw.sayHello();

System.out.println(result);

}

}

 

6.4 运行程序

     1 可以使用原来Junit方式运行

     2 使用Maven方式运行。(在项目的pom.xml上右键)

 

6.4.1 编译

 

 

初次编译时的报错,需要JDK中配置编译参数。

 

 

6.4.2 运行

选择使用Maven方式运行的好处是: 可以一次性运行所有测试程序。

6.4.3 安装

程序安装到本地仓库(远程仓库)

 

安装后,可以其他项目中是用。

其他项目的pom.xml文件中引用。

 

 

7 web项目

7.1 web项目骨架选择

 

7.2 web项目目录结构

 

在web项目中,比没有提供存放java源代码的目录。需要,需要手动创建。

 

 

 

 

 

 

7.3 POM文件

<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/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>com.zrgk.ssm</groupId>

<artifactId>mvn-ssm</artifactId>

<packaging>war</packaging>

<version>0.0.1-SNAPSHOT</version>

<name>mvn-ssm Maven Webapp</name>

<url>http://maven.apache.org</url>

<dependencies>

<!-- spring -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-core</artifactId>

<version>3.0.7.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context</artifactId>

<version>3.0.7.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context-support</artifactId>

<version>3.0.7.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-beans</artifactId>

<version>3.0.7.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-web</artifactId>

<version>3.0.7.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-webmvc</artifactId>

<version>3.0.7.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-aop</artifactId>

<version>3.0.7.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-jdbc</artifactId>

<version>3.0.7.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-tx</artifactId>

<version>3.0.7.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-orm</artifactId>

<version>3.0.7.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-aspects</artifactId>

<version>3.0.7.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-expression</artifactId>

<version>3.0.7.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-expression</artifactId>

<version>3.0.7.RELEASE</version>

</dependency>

 

<!-- aspectj -->

<dependency>

<groupId>aspectj</groupId>

<artifactId>aspectjrt</artifactId>

<version>1.5.4</version>

</dependency>

<!-- 这个jar包直接下载没有成功,使用手动加载的方式加载的这个jar-->

<dependency>

<groupId>org.aspectj</groupId>

<artifactId>aspectjweaver</artifactId>

<version>1.6.12</version>

</dependency>

<!-- mybatis3.3.0 -->

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis</artifactId>

<version>3.3.0</version>

</dependency>

<!-- pagehelper -->

<dependency>

<groupId>com.github.pagehelper</groupId>

<artifactId>pagehelper</artifactId>

<version>4.2.1</version>

</dependency>

<!-- mybatisspring整合 1.2.2 -->

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis-spring</artifactId>

<version>1.2.2</version>

</dependency>

<!-- jstl 1.2 -->

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>jstl</artifactId>

<version>1.2</version>

</dependency>

<!-- mysql -->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>5.1.28</version>

</dependency>

<!-- dbcp -->

<dependency>

<groupId>commons-dbcp</groupId>

<artifactId>commons-dbcp</artifactId>

<version>1.4</version>

</dependency>

 

<!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->

<dependency>

<groupId>commons-logging</groupId>

<artifactId>commons-logging</artifactId>

<version>1.2</version>

</dependency>

 

<!-- javaEE 5 -->

<dependency>

<groupId>javaee</groupId>

<artifactId>javaee-api</artifactId>

<version>5</version>

</dependency>

 

<!--

<dependency>

<groupId>cglib</groupId>

<artifactId>cglib</artifactId>

<version>2.2</version>

</dependency>

 -->

  <!--      <dependency>

    <groupId>asm</groupId>

    <artifactId>asm</artifactId>

    <version>2.2.3</version>

       </dependency> -->

 

<dependency>

    <groupId>cglib</groupId>

    <artifactId>cglib-nodep</artifactId>

    <version>2.1_3</version>

        </dependency>

        

 

</dependencies>

<build>

<finalName>mvn-ssm</finalName>

</build>

</project>

 

 

 

 

 

 

7.4 jar不能下载问题

一、问题描述

Maven下载“oracle14-10.2.0.1.0.jar”、“aspectjweaver-1.6.12.jar”、“com.springsource.net.sf.cglib-2.2.0.jar”失败。

二、解决

 

查询oracle的版本,找到相应的驱动jar

 

SELECT * FROM v$version;

因为oracle驱动需要官方授权,因此maven官方库没有oracle jdbc驱动包,无法在pom.xml文件直接配置进行下载。可以通过将驱动包安装到本地maven库解决此问题。具体步骤是:

1.http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html 下载你所需要的oraclejar包。

2.c盘新建oracle文件夹,将下载好的oracle14.jar放到oracle文件夹中。

3.cmd中运行一下:

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.3.0 -Dpackaging=jar -Dfile=C:/oracle/ojdbc14.jar

 

 

 

 

 

4.pom.xml中添加以下代码:

    <dependency>

       <groupId>com.oracle</groupId>

       <artifactId>ojdbc14</artifactId>

      <version>10.2.0.3.0</version>

   </dependency>

下载aspectjweaver-1.6.12.jar

解决方案同上。下载此包的地址:http://maven.outofmemory.cn/org.aspectj/aspectjweaver/1.6.12/

注:在mvn install命令只需修改-DgroupId-DartifactId-Dversion-Dfile即可。

 

下载com.springsource.net.sf.cglib-2.2.0.jar

maven默认的官方库(http://repo.maven.apache.org/maven2 )没有找到此jar,但是在http://repository.sonatype.org/content/groups/public/ 这个库中有这个jar,因此在eclipse中添加这个库即可,如下:

<repositories>

      <repository>

          <id>Sonatype</id>

          <name>Sonatype Repository</name>

          <url>http://repository.sonatype.org/content/groups/public/</url>

          <layout>default</layout>

          <releases>

              <enabled>true</enabled>

          </releases>

          <snapshots>

             <enabled>false</enabled>

          </snapshots>

     </repository>

 </repositories>

这样,Maven在从默认仓库中找不到此jar后就会从上面的网址中进行下载。

7.5 发布运行

项目部署到服务器中后的结构,和以前创建的web项目部署后的结构是完全相同的。访问方式也相同。

8 继承

一个项目比较大,模块比较时,可以把项目拆分成多个项目,再使用maven对这些拆分出来的项目进行统一管理。这样做的好处是,方便维护,也方便分布式部署。

 

这里以上面的SSM项目为例子,把DAOServiceController页面信息(包括配置文件) 分别拆成独立的项目。

 

这里注意,web项目要引用Controller,Controller引用ServiceService要引用DAO

所有依次安装DAOService、Controller到本地库,再依次引用。

在做这些工作,大家会发现,每个项目都需要配置自己pom.xml文件中的信息。有很多重复工作。我们可以使用继承来解决这个问题。

 

创建项目 ssm_parent(被继承的项目)

 

 

继承的项目,在创建时不需要使用骨架。

 

 

   继承的项目,不需要被打包,这里选择pom即可。

 

这个项目的pom文件中配置导入jar

其他项目中,使用pom.xml文件来继承这个项目

<parent>

      <groupId>com.zrgk.ssm</groupId>

      <artifactId>ssm-parent</artifactId>

      <version>0.0.1-SNAPSHOT</version>

      <relativePath>../ssm-parent/pom.xml</relativePath>

  </parent>

 

<artifactId>ssm-service</artifactId>

  <packaging>jar</packaging>   <!—groupIdversion不再需要—>

 

9 聚合

为什么需要聚合按照上面的继承方式构建的项目,比如DAO项目中的代码发生编码时,

需要重新安装项目到本地库。而由于DAO发生变化,service和controller也需要重新安装。

这样操作比较繁琐,我们可以创建一个聚合的项目来统一管理这项目的统一编译、测试、打包等操作。

 

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

  

  <modules>

     <module>../ssm_parent/pom.xml</module>

     <module>../ssm_dao/pom.xml</module>

     <module>../ssm_service/pom.xml</module>

     <module>../ssm_controller/pom.xml</module>

  </modules>

  <groupId>com.zrgk.ssm</groupId>

  <artifactId>ssm_manager</artifactId>

  <version>0.0.1-SNAPSHOT</version>

  <packaging>pom</packaging>

  <build/>

</project>

 

相关文章:

  • 2021-10-31
  • 2021-10-08
  • 2021-12-12
  • 2022-12-23
  • 2021-09-10
  • 2021-10-17
  • 2021-06-15
猜你喜欢
  • 2022-02-07
  • 2021-11-23
  • 2021-05-14
  • 2021-11-30
  • 2021-06-20
  • 2021-06-17
相关资源
相似解决方案