Maven使用详解

1.下载maven安装包

2.解压后配置环境变量M2_HOME

3.配置执行环境,配置path路径

4.mvn -v 检测maven的安装版本

5.pom.xml

<?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.zsj.maven</groupId>

  <artifactId>maven-ch01</artifactId>

  <version>0.0.1-SNAPSHOT</version>

  <dependencies>

 <groupId>junit</groupId>

      <artifactId>junit</artifactId>

      <version>3.8.1</version>

 <scope>test</scope>

  </dependencies>

</project>

6.目录结构

  src/main/java

  src/main/resources

  src/main/test

7.mvn compile 【执行命令的时候会自动下载依赖的插件】

  mvn test

  mvn clean 删除源文件

  mvn package

  mvn install 将项目打包安装

8.一个项目引用另一个项目

<?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.zsj.maven</groupId>

  <artifactId>maven-ch02</artifactId>

  <version>0.0.1-SNAPSHOT</version>

  <dependencies>

 <groupId>com.zsj.maven</groupId>

 <artifactId>maven-ch01</artifactId>

 <version>0.0.1-SNAPSHOT</version>

  </dependencies>  

</project>  

9.本地默认仓库目录:C:\Documents and Settings\Administrator\.m2\repository

10.配置仓库目录[E:\apache-maven-3.0.4\conf]

配置localRepository,并将settings.xml拷贝到自己新建的本地仓库下

Default: ~/.m2/repository

<localRepository>D:/repos/repository</localRepository>

将原来配置目录下的settings.xml的localRepository同步改

拷贝的配置文件在D:/repos目录下

11.配置中央工厂

默认配置是在maven-model-builder-3.0.4.jar中的pom-4.0.0.xml中

<repositories>

    <repository>

      <id>central</id>

      <name>Central Repository</name>

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

      <layout>default</layout>

      <snapshots>

        <enabled>false</enabled>

      </snapshots>

    </repository>

  </repositories>

12.利用maven骨架生成项目

生成方式一:mvn archetype:generate 

生成方式二:mvn archetype:generate -DgroupId=com.zsj.maven -DartifactId=maven-ch03

-Dversion=0.0.1-SNAPSHOT

13.配置Eclipse中的maven

下载安装m2eclipse

windows--preference--maven--installation

windows--preference--maven--user setting

14.maven隐式变量【Maven提供了三个隐式的变量可以用来访问环境变量,POM信息,和Maven Settings】

1.env

env变量,暴露了你操作系统或者shell的环境变量。便 如在Maven POM中一个对${env.PATH}的引用将会被${PATH}环境变量替换,在Windows中为%PATH%.

2.projetc

project变量暴露了POM。可以使用点标记(.)的路径来引用POM元素的值。例如

<project>

        <modelVersion>4.0.0</modelVersion>

        <groupId>org.sonatype.mavenbook</groupId>

        <artifactId>project-a</artifactId>

        <version>1.0-SNAPSHOT</version>

        <packaging>jar</packaging>

        <build>

        <finalName>${project.groupId}-${project.artifactId}</finalName>

        </build>

        </project>

当你使用mvn help:effective-pom 查看时,你会看到<finalName>org.sonatype.mavenbook-project-a</finalName>

${basedir} 项目根目录

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

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

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

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

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

15.maven Scope

在POM 4中,<dependency>中还引入了<scope>,它主要管理依赖的部署。目前<scope>可以使用5个值:

* compile,缺省值,适用于所有阶段,会随着项目一起发布。 

    * provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。 

    * runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。 

    * test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。不会发生传递依赖 

    * system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。

16.依赖

16.1 A依赖xx1.jar,B依赖于xx2.jar ,A,B依赖相同的jar

如果C依赖于A,B,那么C依赖的jar将跟随先依赖的模块

16.2 依赖级别相同的时候,选择路径最短的

17.排除依赖包

<dependency>

<groupId>org.easymock</groupId>

<artifactId>easymock</artifactId>

<version>3.1</version>

<exclusions>

<exclusion>

<groupId>com.xxx</groupId>

<artifactId>xxx</artifactId>

</exclusion>

</exclusions>

</dependency>

18.聚合多个项目

在eclipse中创建一个简单的maven项目,跳过固有的结构模式

<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.zsj.user</groupId>

<artifactId>user-aggregation</artifactId>

<version>0.0.1-SNAPSHOT</version>

<packaging>pom</packaging>

<modules>

<module>../user-core</module>

<module>../user-log</module>

<module>../user-service</module>

</modules>

</project>

19.继承

  在引用模块的配置

  <modelVersion>4.0.0</modelVersion>

  <parent>

  <groupId>xxx</groupId>

  <artifactId>ddd</artifactId>

  <version>ssss</version>

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

  </parent>

  依赖继承,在父模块中配置,此时子模块中就不需要填写依赖包的版本信息

  <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.zsj.user</groupId>

  <artifactId>user-parent</artifactId>

  <version>0.0.1-SNAPSHOT</version>

  <packaging>pom</packaging>

  <dependencyManagement>

  <dependencies>

  <dependency>

  ****

  </dependency>

  </dependencies>

  </dependencyManagement>

</project>

继承和聚合可以合在一起

本文出自 “逆天” 博客,转载请与作者联系!

你可能感兴趣的:(java,maven,使用详解)