首页 > 代码库 > 使用Maven管理软件项目

使用Maven管理软件项目

什么是Maven

  

  Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。

 

Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。

 

此外,Maven能够很方便的帮你管理项目报告,生成站点,管理JAR文件,等等。
为什么要用Maven
  我最初使用Maven是因为使用jar包的不便,每次在Java项目中要使用相应的jar包都要先上网下载,由于下载途径的多样性,对这些jar包的筛选及其稳定性也成了一个令人头疼的事情,jar包一多,对这些jar包的管理也是很烦的。而使用Maven就可以很好的解决这个问题,在Maven项目中,通过pom.xml添加依赖(jar包),只须在pom.xml文件中配置所需用到jar包的坐标,版本即可,在创建Maven项目时会自动到Maven中央仓库下载jar包到本地,Maven中央仓库有各种各样的jar包以及各种版本,使用起来很方便。
  除此之外,Maven还有以下功能:
  1.编译源代码
   2. 发布项目
   3. 编译测试源代码
   4.运行应用程序中的单元测试
   5.生成项目相关信息的网站
   6.清除项目目录中的生成结果
   7.根据项目生成的jar
   8. 在本地Repository中安装jar
   9.eclipse 生成eclipse项目文件
  10启动jetty服务
  11启动tomcat服务
  12清除以前的包后重新打包,跳过测试类
Maven标准目录结构
     1.标准目录结构:

 

src

  -main
      –bin 脚本库
      –java java源代码文件
      –resources 资源库,会自动复制到classes目录里
      –filters 资源过滤文件
      –assembly 组件的描述配置(如何打包)
      –config 配置文件
      –webapp web应用的目录。WEB-INF、css、js等
  -test
      –java 单元测试java源代码文件
      –resources 测试需要用的资源库
      –filters 测试资源过滤库
  -site Site(一些文档)
target
LICENSE.txt Project’s license
README.txt Project’s readme

工程根目录下就只有src和target两个目录

target是有存放项目构建后的文件和目录,jar包、war包、编译的class文件等。

target里的所有内容都是maven构建的时候生成的

pom.xml

  下贴SSM框架常用的依赖构成的pom.xml文件:

    

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
  3.     <modelVersion>4.0.0</modelVersion>  
  4.     <groupId>com.zhdm</groupId>  
  5.     <artifactId>SSMDemo</artifactId>  
  6.     <packaging>war</packaging>  
  7.     <version>0.0.1-SNAPSHOT</version>  
  8.     <name>SSMDemo Maven Webapp</name>  
  9.     <url>http://maven.apache.org</url>  
  10.   
  11.     <properties>  
  12.         <!-- spring版本号 -->  
  13.         <spring.version>4.0.2.RELEASE</spring.version>  
  14.         <!-- mybatis版本号 -->  
  15.         <mybatis.version>3.2.6</mybatis.version>  
  16.         <!-- log4j日志文件管理包版本 -->  
  17.         <slf4j.version>1.7.7</slf4j.version>  
  18.         <log4j.version>1.2.17</log4j.version>  
  19.     </properties>  
  20.   
  21.   
  22.     <dependencies>  
  23.         <!-- 加密解密需要的jar包 -->  
  24.         <dependency>  
  25.             <groupId>org.bouncycastle</groupId>  
  26.             <artifactId>bcprov-ext-jdk15on</artifactId>  
  27.             <version>1.50</version>  
  28.         </dependency>  
  29.   
  30.   
  31.         <dependency>  
  32.             <groupId>org.apache.directory.studio</groupId>  
  33.             <artifactId>org.apache.commons.codec</artifactId>  
  34.             <version>1.8</version>  
  35.         </dependency>  
  36.   
  37.   
  38.         <!-- 邮件需要的jar包,记不清是否一定需要 -->  
  39.         <dependency>  
  40.             <groupId>com.sun.mail</groupId>  
  41.             <artifactId>javax.mail</artifactId>  
  42.             <version>1.5.0</version>  
  43.         </dependency>  
  44.         <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->  
  45.         <dependency>  
  46.             <groupId>commons-dbcp</groupId>  
  47.             <artifactId>commons-dbcp</artifactId>  
  48.             <version>1.2.2</version>  
  49.         </dependency>  
  50.         <!-- 导入java ee jar 包 -->  
  51.         <dependency>  
  52.             <groupId>javax</groupId>  
  53.             <artifactId>javaee-api</artifactId>  
  54.             <version>7.0</version>  
  55.         </dependency>  
  56.         <!-- spring核心包 -->  
  57.         <dependency>  
  58.             <groupId>org.springframework</groupId>  
  59.             <artifactId>spring-core</artifactId>  
  60.             <version>${spring.version}</version>  
  61.         </dependency>  
  62.   
  63.   
  64.         <dependency>  
  65.             <groupId>org.springframework</groupId>  
  66.             <artifactId>spring-web</artifactId>  
  67.             <version>${spring.version}</version>  
  68.         </dependency>  
  69.         <dependency>  
  70.             <groupId>org.springframework</groupId>  
  71.             <artifactId>spring-oxm</artifactId>  
  72.             <version>${spring.version}</version>  
  73.         </dependency>  
  74.         <dependency>  
  75.             <groupId>org.springframework</groupId>  
  76.             <artifactId>spring-tx</artifactId>  
  77.             <version>${spring.version}</version>  
  78.         </dependency>  
  79.   
  80.   
  81.         <dependency>  
  82.             <groupId>org.springframework</groupId>  
  83.             <artifactId>spring-jdbc</artifactId>  
  84.             <version>${spring.version}</version>  
  85.         </dependency>  
  86.   
  87.   
  88.         <dependency>  
  89.             <groupId>org.springframework</groupId>  
  90.             <artifactId>spring-webmvc</artifactId>  
  91.             <version>${spring.version}</version>  
  92.         </dependency>  
  93.         <dependency>  
  94.             <groupId>org.springframework</groupId>  
  95.             <artifactId>spring-aop</artifactId>  
  96.             <version>${spring.version}</version>  
  97.         </dependency>  
  98.   
  99.   
  100.         <dependency>  
  101.             <groupId>org.springframework</groupId>  
  102.             <artifactId>spring-context-support</artifactId>  
  103.             <version>${spring.version}</version>  
  104.         </dependency>  
  105.   
  106.   
  107.         <dependency>  
  108.             <groupId>org.springframework</groupId>  
  109.             <artifactId>spring-test</artifactId>  
  110.             <version>${spring.version}</version>  
  111.         </dependency>  
  112.         <!-- mybatis核心包 -->  
  113.         <dependency>  
  114.             <groupId>org.mybatis</groupId>  
  115.             <artifactId>mybatis</artifactId>  
  116.             <version>${mybatis.version}</version>  
  117.         </dependency>  
  118.         <!-- mybatis/spring包 -->  
  119.         <dependency>  
  120.             <groupId>org.mybatis</groupId>  
  121.             <artifactId>mybatis-spring</artifactId>  
  122.             <version>1.2.2</version>  
  123.         </dependency>  
  124.         <dependency>  
  125.             <groupId>junit</groupId>  
  126.             <artifactId>junit</artifactId>  
  127.             <version>4.11</version>  
  128.             <scope>test</scope>  
  129.         </dependency>  
  130.         <!-- 导入mybatis包 -->  
  131.         <dependency>  
  132.             <groupId>org.mybatis</groupId>  
  133.             <artifactId>mybatis</artifactId>  
  134.             <version>3.2.6</version>  
  135.         </dependency>  
  136.   
  137.   
  138.         <!-- 导入Mysql数据库链接jar包 -->  
  139.         <dependency>  
  140.             <groupId>mysql</groupId>  
  141.             <artifactId>mysql-connector-java</artifactId>  
  142.             <version>5.1.30</version>  
  143.         </dependency>  
  144.         <!-- json数据 -->  
  145.         <dependency>  
  146.             <groupId>org.codehaus.jackson</groupId>  
  147.             <artifactId>jackson-core-asl</artifactId>  
  148.             <version>1.9.13</version>  
  149.         </dependency>  
  150.         <dependency>  
  151.             <groupId>org.codehaus.jackson</groupId>  
  152.             <artifactId>jackson-mapper-asl</artifactId>  
  153.             <version>1.9.13</version>  
  154.         </dependency>  
  155.           
  156.         <!-- JSTL标签类 -->  
  157.         <dependency>  
  158.             <groupId>jstl</groupId>  
  159.             <artifactId>jstl</artifactId>  
  160.             <version>1.2</version>  
  161.         </dependency>  
  162.           
  163.   
  164.   
  165.         <!-- 日志文件管理包 -->  
  166.         <!-- log start -->  
  167.         <dependency>  
  168.             <groupId>log4j</groupId>  
  169.             <artifactId>log4j</artifactId>  
  170.             <version>${log4j.version}</version>  
  171.         </dependency>  
  172.         <dependency>  
  173.             <groupId>org.slf4j</groupId>  
  174.             <artifactId>slf4j-api</artifactId>  
  175.             <version>${slf4j.version}</version>  
  176.         </dependency>  
  177.         <dependency>  
  178.             <groupId>org.slf4j</groupId>  
  179.             <artifactId>slf4j-log4j12</artifactId>  
  180.             <version>${slf4j.version}</version>  
  181.         </dependency>  
  182.         <!-- log end -->  
  183.     </dependencies>  
  184.     <build>  
  185.         <finalName>SSMDemo</finalName>  
  186.     </build>  
  187. </project>  

 

 

使用Maven管理软件项目