maven笔记

一、概述

Maven是一个:

a.项目构建工具,可以自动化地对软件进行编译、单元测试、文档生成,打包和部署。

b.依赖管理工具,maven给每个软件构件(artifact)定义了一个坐标(groupId,artifactId,version必选三元组,packaging可选,classifier不能直接定义),并且维护了一个免费的中央库(repository),

c.项目信息管理工具,可以管理包括项目描述,开发组列表,版本控制系统地址,许可证,bug管理系统地址等。

二、安装实践

1、conf/settings.xml配置文件,最佳方式是把这个文件拷贝到~/.m2目录下,然后进行修改,这里的配置优先于安装目录下的配置,而且只影响当前用户,这样方便maven的升级。

  如果直接在安装目录下修改这个配置文件,影响是全局的,也就是这台机器上的所有用户都受影响,也不方便以后的升级。

2、安装m2eclipse插件后,插件会自带一个maven,内嵌到eclipse中,这样从eclipse中执行maven命令可能和从命令行执行时的行为不一致。

  最佳做法是,在eclipse中preference中配置maven,使用安装的maven,而不是eclipse自带的maven。

三、常用Maven库

https://maven.alfresco.com/nexus/content/repositories/
http://download.java.net/maven/2/
https://repo.springsource.org/libs-release
https://repo.springsource.org/libs-milestone
http://repository.jboss.org/nexus/content/groups/public-jboss/
https://repository.sonatype.org/content/groups/forge/
https://repository.sonatype.org/content/shadows/centralm1/

四、maven属性

1、内置属性:

${basedir},项目跟目录

${version},项目版本

2、POM属性:

${project.groupId}, ${project.artifactId}, ${project.version}等价于${version}

${project.build.finalName}, 默认为${project.artifactId}-{project.version}

${project.build.directory}, 对应:target

${project.build.sourceDirectory}, 对应:src/main/java

${project.build.testSourceDirectory}, 对应:src/test/java

${project.outputDirectory}, 对应:target/classes

${project.testOutputDirectory}, 对应:target/test-classes

3、自定义属性

就是在POM文件里定义的自定义属性,如:<properties><spring.version>3.1.3.RELEASE</spring.version></properties>

4、settings属性

和自定义属性类似,可以引用在settings.xml文件中定义的属性,如:${settings.localRepository}

5、Java系统属性

如:${user.home}指向用户目录,可以使用:mvn help:system命令查看所有系统属性

6、环境变量属性

如:${env.JAVA_HOME},可以使用:mvn help:system命令查看所有系统属性

五、Profile

Profile是为方便POM在不同环境下的能有不同的配置而提出的概念。

典型的例子就是测试,开发,生产环境下数据库配置不同,这时可以把不同的配置放到profile配置段中。

原文地址:https://www.cnblogs.com/winson/p/3305218.html