Maven使用指南

Paste_Image.png

Maven 使用指南

配图笔记,这里只记录图里面不好表达都。

简介

仓库

本地仓库配置

在setting.xml中配置
D:/MavenRepos

远程仓库配置

在maven的安装路径下 lib\maven-model-builder-x.x.x.jar里面的 pom.xml中,单独配置 如下:



companyname.lib1 http://download.companyname.org/maven2/lib1


companyname.lib2 http://download.companyname.org/maven2/lib2

配置文件 setting.xml

有许多类似Plugin org.apache.maven.plugins:maven-clean-plugin:2.5 or one of its depende都错误,是因为这个东西没有下载下来,特别是使用cmd窗口敲maven命令时,默认使用的是用户setting.xml文件,位于 C:\Users\xxxx.m2 下面。
主要是镜像设置都问题,不是被屏蔽了,就是无法访问,下面这个是我测试可以使用都,可以解决上面那个问题。

mirrorId
repositoryId
Human Readable Name for this Mirror.
http://my.repository.com/repo/path

POM

定义变量

中可以定义变量,这些变量可以在 中使用

Paste_Image.png

增加没有的jar到本地仓库

比如说oracle的jdbc在一般的maven仓库中没有,需要自己增加到本地仓库中

mvn install:install-file -DgroupId=com.oracle "-DartifactId=ojdbc14" "-Dversion=10.2.0.2.0" "-Dpackaging=jar" "-Dfile=D:\ojdbc14.jar"

依赖


ldapjdk
ldapjdk
system
1.0
${basedir}\src\lib\ldapjdk.jar

快照 vs 版本

快照是一个特殊都版本,Maven每次都从仓库里取最新都快照 (data-service:1.0-SNAPS
HOT),而版本如果不指定新版本就不会再拿新的了( data-service:1.0)

构建

自动构建
构建都命令
clean 清理 target目录
compile 编译项目都主要代码
package 打包,打包在target目录下面
install 安装,估计是安装到仓库中,如果不设置是本地仓库

mvn archetype:generate 生成骨架

maven 隐藏变量

Maven 提供了3个隐藏的变量

env

在Maven POM中一个对${env.PATH}的引用将会被${PATH}环境变量替换,在Windows中为%PATH%

project


4.0.0
org.sonatype.mavenbook
project-a
1.0-SNAPSHOT
jar

${project.groupId}-${project.artifactId}

${basedir} 项目根目录
${project.build.directory} 构建目录,缺省为target
${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes
${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}
${project.packaging} 打包类型,缺省为jar
${project.xxx} 当前pom文件的任意节点的内容

settings

${settings.offline}会引用~/.m2/settings.xml文件中offline元素的值

聚合

聚合是模块都位置

继承

继承是pom文件都绝对路径

修改pom文件,增加需要构建都工程




maven-invoker-plugin
1.6

true

app-web-ui/pom.xml
app-desktop-ui/pom.xml



build

run





使用 持续集成服务器 CI

报告

报告在target目录下面

依赖管理

Paste_Image.png

传递依赖发现

我们只需要在pom的配置文件中定义直接依赖,剩下都交由Maven处理。
其中的范围是test,这个依赖不会传递

依赖调节

当多个相同都依赖,在依赖树都深度是一样都, 则第一个被声明都依赖将被使用

依赖范围


其中 compile 编译、打包会把该依赖放入(默认都范围)
import
provided 编译、测试阶段会有该依赖,打包时不会放入
runtime 编译时不依赖,测试和运行时才会依赖,例如mysql都驱动
system
test 测试时依赖,但是编译和打包时都不会加入该依赖

依赖排除

传递依赖可以通过 exclusion 标记排除



依赖可选

使用optional

解释上图,一个系统中公用的依赖可以都放在一个工程里面,做成父pom,
这里 父pom的包类型是 pom

com.companyname.groupname
Root
1.0
pom

而子pom的包类型是jar
子pom引用父pom的方式如下


Root
com.companyname.groupname
1.0

而最后一层的App-UI-WAR 的pom,根据传递依赖,只需要正常都使用依赖就可以了。

自动化部署 SCM

  • maven构建和发布项目
  • svn管理源代码
  • 远程仓库 nexus 管理工程的二进制文件


http://www.svn.com
scm:svn:http://localhost:8080/svn/jrepo/trunk/ Framework
scm:svn:${username}/${password}@localhost:8080: common_core_api:1101:code



Core-API-Java-Release
Release repository
http://localhost:8081/nexus/content/repositories/ Core-Api-Release





org.apache.maven.plugins
maven-release-plugin
2.0-beta-9

false
deploy
[bus-core-api-release-checkin]-< /scmCommentPrefix>



SCM 配置 SVN 的路径,Maven 将从该路径下将代码取下来。
仓库 成功构建出来的 WAR/EAR/JAR 或者其他的构建结果存放的路径。
插件 maven-release-plugin 用以自动化部署的过程。

构建web工程

mvn archetype:generate
-DgroupId=com.companyname.automobile
-DartifactId=trucks
-DarchetypeArtifactId=maven-archetype-webapp
-DinteractiveMode=false

构建nexus私服

  • 下载nexus 免费版本
  • windows 下,只要将bin路径添加都path下面,并且修改 bin/jws/conf文件,wrapper.java.command=D:\java\jdk1.8.0_71\bin\java (这个路径是java都绝对路径)
  • cmd 输入 nexus install 安装都服务管理中,启动即可
  • http://localhost:8081/nexus
  • 登陆, admin / admin123

提交给私服

mvn:deploy

工厂的区别

![I]TKPWL(EM5FUARXOL7BG}O.png](http://upload-images.jianshu.io/upload_images/1453014-31515c11db91c651.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

修改pom下载文件的地址

在pom里面,增加
可以增加多个工厂,或者,url使用group类型的工厂。

修改settings 也可以

![LQI_$Z]M%$3`]SK(4W8NM1N.png](http://upload-images.jianshu.io/upload_images/1453014-e402b99b7842a2d1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

####### 2016年2月11日 version-0.1
####### 2016年2月13日 version-0.2 根据孔浩培训视频完善一部分
####### 2017年2月20日 补充一部分细节

你可能感兴趣的:(Maven使用指南)