Maven命令记录

来源:互联网 发布:个性围巾 知乎 编辑:程序博客网 时间:2024/06/01 13:48

mvn help:effective-pom 执行这个命令会输出一些maven默认pom的配置以及一些用户自己定义的设置

effective表示有效的,或者说是mave真正运行根据的POM


一个插件可以有多个目标:例如Compiler插件中的compile目标,或者是Surefire插件中的test目标

目标中可以定义一组配置参数,例如compile允许设置JDK版本或者选择是否用编译优化


Archetype插件可以生成默认的maven-archetype-quickstart,也可以生成复杂的web应用


插件可以附着在生命周期阶段上,在每个阶段可以绑定零个或多个目标,例如运行mvn package可能已经不止一个目标被执行了



最后是deploy复制最终的包至远程仓库,共享给其他开发人员(通常和一次正式的发布相关)

站点生成周期1,site - site:site 2,site-deploy - site:deploy

Profile中允许出现的元素


java系统属性:



ASSembly预定义的套件描述符:bin,jar-with-dependencies,project,src

当以上四种套件描述符不够的时候,就需要自定义你自己的套件描述符,套件描述符是一个定义了套件结构和内容的XML文档


由于套件是附属构建,除了标准的构建坐标,还必须拥有一个分类器来和主构件加以区分,该分类器就是套件描述符的定义符

套件描述符的定义符和descriptorRef中对应使用的定义符是一样的


套件支持的格式包括jar,zip,tar,bzip2,gzip,rar,war,ear,dir等,你也可以创建自定义的格式(通过componentDescriptors和containerDescriptorHandlers)


1,文件信息

File , FileSets元素

directory 表示源文件目录,outputDirectory 表示输出目录
userDefaultExcludes控制排除源码控制元数据文件和目录,例如.svn和CVS的目录

2.依赖信息

dependencySets元素(包含项目的依赖),file和fileSets只是处理你项目中的文件,相比较file和filesets需要一个具体的资源路径

我们使用一组Maven坐标和依赖范围来包含或者排除依赖

useProjectArtifact=false就是排除掉当前项目的构建
unpack标记为true来拆解依赖构建
自定义依赖输出目录:outputDirectory和outputFileNameMapping,
还可以通过范围包含或排除依赖
如果你有三个或四个web应用,他们重用了同样的资源,他想要创建一个套件,将provided依赖放到lib/,
将runtime依赖放到webapps/<contextName>/WEB-INF/lib,将某个特定的runtime依赖拆解并放到web应用的文档根目录
中,能完成上述操作,使用dependencySet元素定义多个包含和排除模式,
和fileSets元素一样,dependencySets元素也支持useStrictFiltering标记,开启的时候,当任何一个指定的模式没有匹配
任何依赖的信息,assembly插件就会失败
userProjectAttachments表示(默认为false),开启这个标记后,指定分类器和类型的模式就会匹配到那些"附属到"项目
主构件的构件,当我们需要在套件中包含javaDoc或者源码的时候,就可以使用这一特性
userTransitiveDependencies(默认true)指定依赖集合是否计算传递性依赖
unpackOptions高级拆解选项:使用这个元素,我们可以选择拆解的时候包含或者排除哪些文件模式,并且配置哪些
文件是否需要被过滤

3.模块信息

moduleSets元素:可以使用moduleSet指定包含某些模块的文件和资源,通过激活两个基本类型的,模块特定的包含元素

就可以实现这一点,file-based和artifacts-based

模块选择,includes/excludes模式,只是简单的某个模块的groupId和artifactId,通过冒号分隔

除了她两,还支持一种额外的选择工具:includeSubModules(默认值为true),

当一个项目模块包含的模块被认为是一个子模块,你想要单独的处理结构中的每一个模块(包括子模块),最简单的就是在模块中处理,为此

只要简单的让includeSubModule为默认值true,而如果希望一次整个的处理所有模块的目录,你的项目目录和Pom中父子结构一致,此时你不想

直接处理子模块,应该讲includeSubModules设置为false

源码选择:假如要在套件中包含所有模块的源码,并且希望排除某个特殊的模块,最简单的方式是使用moduleSet

如果是处理每个模块的源码,因此只处理当前模块更简单,使用文件集合的文件路径通配符来处理子模块,我们将includeSubModules

元素设为false,因此就不用担心子模块出现在套件的根目录中因此我们从所有模块中排除target/目录

由于我们没有在这个模块集合中显示的处理子模块,我们需要确保子模块的目录内容没有被排除在外,通过设置excludeSubModuleDirectories为true,我们就可以在子模块的

目录中应用相同的文件模式,我们对模块集合构建过程中的任何输出都没有兴趣, 因此我们从所有模块中排除target/目录。

outputDirectoryMapping来更改包含每个模块源码的目录名称,解析该表达式元素的方式和依赖集合中解析outputFileNameMapping元素的方式完全一致

字节码选择:字节码选择就主要关注包含模块的构建输出,attachmentClassifier和includeDependencies值得讨论,此外,biniaries

元素包含一些与dependencySet元素类似的选项,他们关系到模块构建本身的处理,他们是unpack,outputFileNameMapping,

outputDirectory等,最后模块字节码可以包含一个dependencySets元素,用来指定每个模块的依赖如何被包含到套件归档中,

假设想要在套件中包含每个模块的javadoc jar,这时不需要考虑依赖,只要javadoc jar,由于是项目的附属构建,需要指定分类器以获取

该jar

http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html



0 0