maven总结

maven总结

 

1、初始配置

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

<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.my.bookstore</groupId>

<packaging>war</packaging>

    <artifactId>user-core</artifactId>

    <version>1.0-SNAPSHOT</version>

    <name>bookstore maven project</name>

</project>


代码的第一行是xml头,指定了该xml文档的版本和编码方式。紧接着是project元素,project是所有pom.xml的根元素,它还声明了一些POM相关的命名空间及xsd元素,虽然这些属性不是必须的,但使用这些属性能够让第三方工具(如:IDE中的xml编辑器)帮助我们快速编辑POM

modelVersion指定了当前POM模型的版本

groupId定义了项目属于哪个组,这个组往往和项目所在的组织或公司存在关联。例如你的公司是mycom,有一个项目为myapp,那么groupId应该是com.mycom.myapp

artifactId定义了当前maven项目在组中唯一的ID一个项目会分很多模块,模块可以相互引用,如在前面的groupIdcom.mycom.myapp的例子中,你可能会为不同的子项目(模块)分配artifactId,:myapp-util,myapp-domain,myapp-web等。

version指定了项目当前的版本--1.0-SNAPSHOTSNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的版本。随着项目的发展,version会不断更新,如升级为1.0,1.1-SNAPSHOT1.12.0等。

name元素声明了一个对于用户更为友好的项目名称,虽然这不是必须的,但还是推荐为每个pom声明name,以方便信息交流。 

 

Maven的常用命令

mvn compile 编译

mvn test 测试,运行所以的testcase

mvn clean 清空

mvn package 打包

mvn install 安装,这个可以把自己的项目打包放到库中供引用

 

Scope 依赖范围

test 测试范围有效,编译和打包不会引入jar

compile 编译范围有效,编译和打包都会引入jar(默认为compile

provided 编译和测试有效,编译时引入jar,打包时不引入jar(如servlet-api

runtime 运行时依赖,编译时不引入jar,一般不用

 

Maven 内置隐式变量

${basedir} 项目根目录

${project.build.directory} 构建目录,缺省为target

${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes

${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}

${project.packaging} 打包类型,缺省为jar

${project.xxx} 当前pom文件的任意节点的内容,${project.groupId},${project.artifactId}

 

依赖传递

依赖级别相同的时候,哪一个先依赖用哪一个,级别不一样的时候,用依赖层级低的

 

排除依赖

<exclusions>

    <exclusion>

        <groupId></groupId>

        <artifactId></artifactId>

    </exclusion>

</exclusions>

 

例:

<dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-web</artifactId>

    <version>${spring.version}</version>

    <exclusions>

        <exclusion>

            <groupId></groupId>

            <artifactId></artifactId>

        </exclusion>

    </exclusions>

</dependency>

 

聚合

为了能够使用一条命令就能构建一个完整的项目(包含多个子模块)

如一个bookstore项目有3个子模块分别为bookstore-shiro、bookstore-log、bookstore-core

我们就会创建一个聚合项目bookstore,在pom.xml下面配置,这样3个子模块就构建在一起,变成了bookstore

<modules>

    <!--引用路径为pom.xml 的相对路径-->

    <module>../bookstore-shiro</module> 

    <module>../bookstore-log</module> 

    <module>../bookstore-core</module>  

</modules>


继承

如父项目配置

<project>  

    <modelVersion>4.0.0</modelVersion> 

   <groupId>com.my.cn.bookstore</groupId> 

   <artifactId>bookstore</artifactId> 

    <version>0.0.1-SNAPSHOT</version>

   <packaging>pom</packaging>

   <name>bookstore Maven Project</name>  

</project>

 

子项目如下配置

<project>

   <modelVersion>4.0.0</modelVersion>

   <parent>

      <groupId>com.my.cn.bookstore</groupId>

      <artifactId>bookstore/artifactId>

      <version>0.0.1SNAPSHOT</version>

      <relativePath>../bookstore/pom.xml</relativePath>

   </parent>

</project>

 

配置完后,子项目就可以直接使用父项目上配置的一些公共变量和属性

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

<properties>

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

   <spring.version>4.0.1.RELEASE</spring.version>

   <junit.version>4.10</junit.version>

   <hibernate.version>4.3.5.Final</hibernate.version>

   <mysql.version>5.1.6</mysql.version>

   <shiro.version>1.2.2</shiro.version>

</properties>

 

更有父级配置dependencyManagement,子项目这不用versionscope

如父项目配置

<dependencyManagement>

   <dependencies>

   <!-- junit test -->

      <dependency>

         <groupId>junit</groupId>

         <artifactId>junit</artifactId>

         <version>${junit.version}</version>

         <scope>test</scope>

      </dependency>

   </dependencies>

</dependencyManagement>

 

则子项目配置如下即可

<dependencies>

   <!-- junit test -->

   <dependency>

      <groupId>junit</groupId>

      <artifactId>junit</artifactId>

   </dependency>

</dependencies>

 

集合和继承一起使用

一般情况下,我们会把聚合和继承一起配置在一个项目中,bookstore的配置如下

<project>  

   <modelVersion>4.0.0</modelVersion> 

   <groupId>com.my.cn.bookstore</groupId> 

   <artifactId>bookstore</artifactId> 

    <version>0.0.1-SNAPSHOT</version>

   <packaging>pom</packaging>

   <name>bookstore Maven Project</name> 

 

   <modules>

   <!--引用路径为pom.xml 的相对路径-->

      <module>../bookstore-shiro</module> 

      <module>../bookstore-log</module> 

      <module>../bookstore-core</module>  

      </modules>

</project>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值