闲读maven,随手记下

最近因为公司从antx---->maven,n多的项目放到maven来管理,因此自己也需要对maven有些了解。读了<<maven权威指南中文版>>,记下读后想起的些东西:
1, maven home目录下面conf/setting.xml中可以定义网络代理:Specification for one proxy, to be used in connecting to the network.

2, 同样这个配置文件可以指定一个镜象来代替仓库

3, 查看某个插件的帮助:mvn help:describe -Dplugin=[plugin name], 也可以是mvn help:describe -Dplugin=gid:aid
   eg. mvn help:describe -Dplugin=install
       mvn help:describe -Dplugin=org.apache.maven.plugins:maven-install-plugin

  要输出带有参数的完整的目录列表,后面加上-Dfull

这样输出的信息比较多,如果仅仅输出单个目标的信息,可以加上mojo参数


4, 一个maven插件是多个目标的集合


5, 一个生命周期是一些阶段的序列


6, mvn package, 类似这种命令并没有指定一个插件目标,而是指定了一个maven生命周期阶段


生命周期----》阶段----》目标


7, maven仓库既是从远程仓库下载的构件的缓存,也允许你的项目之间相互依赖。
   在maven中,依赖不仅仅是指一个jar,它是一个pom文件。

8, 当为项目创建jar文件时,它所依赖的不会打包到jar包里去,仅仅只是为了编译,当用maven来创建ear或者war包时,可以配置maven让在生成的ear或者war包中包含依赖,也可以配置maven,使用provided范围,让它排除war文件中特定的依赖。


9,  如果想知道项目的依赖树,可以用dependency插件: mvn dependency:tree
    如果仅仅想知道已解决了的依赖列表,可用: mvn dependency:resolve


10, 跳过单元测试,将maven.test.skip设置为true。可以通过环境变量设置如:mvn install-Dmaven.test.skip=true
   当surefire插件到达test目标的时候,如果发现maven.test.skip设置为true了,会跳过单元测试。
  另外一种方法是:

将build里面的plugins里面的surefire插件加上一个配置项,
<configuration>
   <skip>true</skip>
</configuration>


11, 构建一个打包好的应用程序:可以使用maven里的assembly插件:首先得一个装配描述符。 mvn assembly:assembly


12, 如果多于一个项目依赖于一个特定的依赖,可以在dependencyManagement中列出这个依赖,父pom中包含一个版本和一组排除配置,所有子项目中使用groupId与artifactId来引用这个依赖,子项目中可以忽略版本和排除配置


13, 兄弟项目之间一般共享同样的groupId与version,可以使用${project.version}与${project.groupId}这两个内置元素来引用兄弟项目。依赖时只要写清楚artifactId就可以了。


14, 可以通过mvn dependency:analyze来分析使用的,便是没有被直接引用的jar。。。比如你依赖于某一个jar包,但是这个jar包你还是可以用,因为你项目依赖于其他的包也依赖了这个包。



15, 在maven的jar包里面,有一个超级pom.xml: 里面定义了中央仓库的地址,插件仓库的地址,默认build的一些参数(如源代码位置,资源文件地址,测试文件地址。。。),还有一些默认的插件。这些参数可以通过自定义的setting.xml加以覆盖。



16, maven提供了三个隐式变量:env,project,settings
    java系统属性,所有可以通过 System.getProperties方法访问到的属性都能暴露成pom的属性,如,${user.home},${java.home}


17, 默认依赖的scope是compile的,会被打包,如果是test,则为只有在测试的时候在引入该类库。 如果为provided,为在编译和测试时候用,运行时由容器提供。



18, 可以声明对于某一个pom的依赖。不仅仅只是依赖jar包。其他跟依赖jar包一样的,只是加上一个type属性为: <type>pom</type>


19, profile能让你为一个特殊的环境自定义一个特殊的构建---》可移植性



---------------------------------


20, maven-xxx-uber.jar包里定义的pom-4.0.0.xml定义了默认的仓库,插件仓库,基本的插件,build的一些属性(包括源target,源文件,resources,scripts,test源文件目录等)
仓库的位置可以由自定义的settings.xml文件覆盖



21, 如果一个版本号包括SNAPSHOT字段,则在打包和发布的时候将该符号展开为日期和时间值。SNAPSHOP版本只用于开发过程


22, 可以通过settings.xml,pom.xml文件的properties元素设置自己的属性


23. "."在groupId中经常出现,但是最好不要用在artifactId中使用


24, 子项目跟父项目在目录结构上不一定子项目一定得为父项目的子目录,可以用relativePath来指定,如:<relativePath>../a-parent/pom.xml. 这里意味着父项目跟子项目在同一级目录下面。



25, pom依赖,可以添加依赖pom类型的项目,如:
<dependencies>
  <dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>stone</artifactId>
     <version>3.0.0</version>
     <type>pom</type>
  </dependency>
</dependencies>


26, maven中三种标准的生命周期:clean,default,site


27, 将一个插件绑定到一个阶段的方法,是在工程的pom.xml文件中plugins中的子plugin结点中,定义时,设置phrase属性(是在executions属性中

你可能感兴趣的:(maven,xml,项目管理,单元测试,配置管理)