Maven指南阅读笔记.docx

上传人:b****8 文档编号:10962863 上传时间:2023-02-24 格式:DOCX 页数:15 大小:1.01MB
下载 相关 举报
Maven指南阅读笔记.docx_第1页
第1页 / 共15页
Maven指南阅读笔记.docx_第2页
第2页 / 共15页
Maven指南阅读笔记.docx_第3页
第3页 / 共15页
Maven指南阅读笔记.docx_第4页
第4页 / 共15页
Maven指南阅读笔记.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

Maven指南阅读笔记.docx

《Maven指南阅读笔记.docx》由会员分享,可在线阅读,更多相关《Maven指南阅读笔记.docx(15页珍藏版)》请在冰豆网上搜索。

Maven指南阅读笔记.docx

Maven指南阅读笔记

1.构建的groupId和artifactId已经更改了,而当前的项目需要一个与传递性

依赖不同名称的版本——结果是classpath中出现了同样项目的两份内容。

一般来说Maven会捕捉到这种冲突并且使用该项目的一个单独的版本,但是

当artifactId和artifactId不一样的时候,Maven就会认为它们是两种不同的类

库。

2.某个构件没有在你的项目中被使用,而且该传递性依赖没有被标志为可选依赖。

在这种情况下,你可能想要排除这种依赖,因为它不是你的系统需要的东西,你

要尽量减少应用程序分发时的类库数目。

3.一个构件已经在运行时的容器中提供了,因此不应该被包含在你的构件中。

该情

况的一个例子是,如果一个依赖依赖于如ServletAPI的东西,并且你又要确保

这样的依赖没有包含在web应用的WEB-INF/lib目录中。

4.为了排除一个可能是多个实现的API的依赖。

这种情况在例 9.8“排除并替换一

个传递性依赖”中阐述;有一个SunAPI,需要点击许可证,并且需要耗时的手

工安装到自定义仓库,对于同样的API有可免费分发版本,在中央Maven仓库中可

用(Geronimo'sJTA实现)。

换句话说,dependencyManagement元素和一个环境变量一样,能

让你在一个项目下面的任何地方声明一个依赖而不用指定一个版本号

UsingthedependencyManagementelementinapom.xmlallowsyoutoreferenceadependencyinachildprojectwithou

havingtoexplicitlylisttheversion.Mavenwillwalkuptheparent-childhierarchyuntilitfindsaprojectwitha

dependencyManagementelement,itwillthenusetheversionspecifiedinthisdependencyManagementelement.

While'.'sarecommonlyusedingroupIds,youshouldtrytoavoidusingtheminartifactIds.Thiscan

causeissueswhentryingtoparseafullyqualifiednamedownintothesubcomponents.

Maven假设父POM在本地仓库中可用,或者在当前项目的父目录(../pom.xml)中可用。

如果两个位置都不可用,默认行为还可以通过relativePath元素被覆盖。

可以定义一些常用的依赖,打包成pom的,并安装到本地仓库,以后就可以在项目中直接使用,但记得在写依赖的时候要将类型写为pom,这样做对比使用parent有个好处,因为一个项目只能有一个parent。

TriggeringaGoalonpre-clean

...

maven-antrun-plugin

file-exists

pre-clean

run

--addstheant-contribtasks(if/then/elseusedbelow)-->

file="${project.build.directory}/${project.build.finalName}.${project.packaging}"

property="file.exists"value="true"/>

No

${project.build.finalName}.${project.packaging}to

delete

Deleting

${project.build.finalName}.${project.packaging}

ant-contrib

ant-contrib

1.0b2

也可以在标准的clean插件上进行配置:

4.0.0

...

maven-clean-plugin

target-other

*.class

默认的生命周期:

Site的生命周期:

1.pre-site

2.site

3.post-site

4.site-deploy

The default goals bound to the site life cycleis:

1.site-site:

site

2.site-deploy-site:

deploy

内置打包的生命周期:

打成Jar包的生命周期:

POM:

WAR打包:

The WAR packaging type is similar to theJARandEJBtypes.Theexceptionbeingthepackagegoalofwar:

war.Note

thatthewar:

warpluginrequiresaweb.xmlconfigurationinyoursrc/main/webapp/WEB-INFdirectory.Thedefaultgoals

forprojectswithWARpackagingareshowninTable10.6,“DefaultGoalsforWARPackaging”.

EAR打包:

过滤器,可以替换属性值:

配置resource的目录:

过滤脚本或者文件:

设置编译和运行的JDK版本,对编译插件进行配置,注意,此处是对编译的插件进行设置而不是对编译的目标进行设置的:

可以通过sourceDirectory和outputDirectory来改变默认的源码和输出的文件夹位置,但是为了让你的项目具有更好的可读性,不推荐改变这个默认配置:

同理,可以改变测试文件的源文件和目标文件夹,通过testSourceDirectory和testOutputDirectory来设置。

单元测试时允许让maven跳过失败的单元案例继续下面的测试,通过配置测试插件org.apache.maven.plugins下的maven-surefire-plugin来实现:

或者也可以通过在命令行打包的时候指定参数来达到同样的目的:

Install生命周期:

install生命周期就做一件事,将打包完的jar文件拷贝到本地仓库

Deploy生命周期:

deploy将打包完的东东发布到远程仓库

可以通过profile重写的元素:

Mavne的profile可以定义在pom.xml,profiles.xml,~/.m2/setting.xml或者${MAVEN_HOME}/conf/setting.xml文件里面,可以通过active-profiles目标来查找mvnhelp:

active-profiles

Predefinedassemblydescriptors:

使用方法:

Assembly:

用来打包的

可以有fileSets/dependencySets,可以定义输出的格式、目录结构

上述的webContextName是自定义的POM属性值,这个目录结构是jetty的目录结构

自定义资源文件:

POM文件可以通过${project.*}来获取,具体可以获取到哪些参照http:

//maven.apache.org/ref/2.0.9/maven-model/maven.html 上的Model对象Schemel,其实就是通过XML来配置的一个Java对象

可以通过${settings.*}来获取.m2/settings.xml 文件里面的配置

可以通过${env.*}来获取环境变更的值

任何可以通过Java的System.getProperty()得到的属性都可以通过${属性名}来获取到

Setting.xml:

http:

//maven.apache.org/ref/2.0.9/maven-settings/settings.html

用户自定义属性,可以在节点底下自定义属性,属性可以在其他地方使用,用法一样:

Thisissometext

3.3.0.ga

Java系统属性:

系统属性描述

java.versionJava运行环境版本

java.vendorJava运行环境供应商

java.vendor.urlJava供应商URL

java.homeJava安装目录

java.vm.specification.versionJava虚拟机规格说明版本

java.vm.specification.vendorJava虚拟机规格说明供应商

java.vm.specification.nameJava虚拟机规格说明名称

java.vm.versionJava虚拟机实现版本

java.vm.vendorJava虚拟机实现供应商

java.vm.nameJava虚拟机实现名称

java.specification.versionJava运行环境规格说明版本

java.specification.vendorJava运行环境规格说明供应商

java.specification.nameJava运行环境规格说明名称

java.class.versionJava类格式版本号

java.class.pathJava类路径

java.ext.dirs扩展目录的路径

os.name操作系统名称

os.arch操作系统架构

os.version操作系统版本

file.separator文件分隔符(UNIX上是"/",Windows上是"\")

path.separator路径分隔符(UNIX上是":

",Windows上是";")

line.separator行分隔符(在UNIX和Windows上都是"\n")

user.name用户帐户名称

user.home用户home目录

user.dir用户当前工作目录

默认情况下,资源过滤属性是关闭的,要使用资源过滤必须在下的下面将过滤开关打开:

src/main/resources

true

使用nexus:

通过设置settings.xml的配置来为本地仓库设置镜像:

要配置Maven去查阅Nexus而非中央Maven仓库,在你的~/.m2/settings.xml文件中添加

如例 16.1“为Nexus配置MavenSettings(~/.m2/settings.xml)”的mirror配置,在你将Nexus配置成所有仓库的镜像之后,Maven现在会从本地的Nexus安装查阅,而非

去外面查阅中央Maven仓库。

如果对Nexus有一个构件请求,本地的Nexus安装会提供这

个构件。

如果Nexus没有这个构件,Nexus会从远程仓库获取这个构件,然后添加至远程

仓库的本地镜像。

可以将第三方的JAR包发布到3rd仓库上:

Exec插件:

Mvnexec:

java–Dexec.mailClass=…

Dependency插件:

可以查看依赖关系

跳过失败的单元测试或者测试:

mvntest–Dmaven.test.failure.ignore=true

Mvninstall–Dmaven.test.skip=true

Assebmly插件可以用来对最终分发包进行打包,包括将依赖打进包里面等

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 书信模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1