刚从ANT转到MAVEN,使用了一小段时间,现在有时间多做些了解,拿起《maven in action》书读了一遍,比较基础,不过对maven也有了更多的一些了解,总结一些maven的小知识备用吧!不过要熟悉还是得多用,呵呵!
maven用户可以选择配置$M2_HOME/conf/setting.xml或者~/.m2/setting.xml.前者是全局范围的,整台机器上的所有用户都会直接受到该配置的影响,而后者是用户范围的,只有当前用户才会受到该配置的影响。推荐使用用户范围的setting.xml,主要原因是为了避免无意识地影响到系统中的其他用户。除此以外,还有个原因是便于maven升级。直接修改conf目录下的setting.xml会导致maven升级不便,每次升级到新版本的maven,都需要复制setting.xml文件,如果使用~/.m2目录下的setting.xml,就不会影响到maven安装文件,升级时就不需要触动setting.xml文件。
POM:project object model
就像make的makefile,ant中的build.xml一样,maven项目的核心是pom.xml.
mvn clean compile
mvn clean test
mvn clean package 打包
mvn clean install 将打包好的jar安装到maven本地仓库中
以上的命令越往后的,执行的内容越多,会包含前面的动作,如test会先compile,后test.而install,则是先package,再install,而package本身也要先执行test,依次向上推。
maven的一大功能是管理项目依赖,为了能自动化地解析任何一个JAVA构件,maven就必须将它们唯一标识,这就依赖管理的底层基础-坐标。
maven定义了这样一组规则:世界上任何一个构件都可以使用maven坐标唯一标识,maven坐标的元素包括groupId,artifactId,version,packaging,classifier.只要提供了正确的坐标元素,maven就能找到对应的构件。
groupId定义当前maven项目隶属的实际项目。如springframework这一项目,其对应的maven项目会有很多,如spring-core,spring-context等等,但这些groupId都是org.springframework,只是artifactId不同。而之所以这么划分是由于maven中的模块的概念,因此,一个实际项目往往会被划分成许多模块,这许多模块就通过artifactId来标识。
关于依赖的一些实践:
1.排除依赖。传递性依赖会给项目隐式的引入很多依赖,这极大地简化了项目依赖的管理,但是有些时候这种特性也会带来问题。例如,当前项目有一个第三方依赖,而这个第三方依赖由于某些原因依赖了另外一个类库的SNAPSHOT版本,那么这个SNAPSHOT就会成为当前项目的传递性依赖,而SNAPSHOT的不稳定性会直接影响到当前的项目,这时就需要排除掉该SNAPSHOT,并且在当前项目中声明该类库的某个正式发布的版本。例子:
<dependencies>
<dependency>
<groupId>com.test.mvcbook</groupId>
<artifactId>project-b</artifactId>
<version>1.0.0</version>
<exclusions>
<exclusion>
<groupId>com.test.mvcbook</groupId>
<artifactId>project-c</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.test.mvcbook</groupId>
<artifactId>project-c</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies>
2.归类依赖。有很多关于spring framework的依赖,它们如org.springframework:spring-core:2.5.6,org.springframework:spring-beans:2.5.6,org.springframework:spring-context:2.5.6等,它们来自于同一项目的不同模块,这些依赖的版本是一样的,而且,可以预见,如果将来需要升级spring gramework,这些依赖的版本会一起升级。但修改的时候,可能会遗漏一些,就像在JAVA中,一些常量,我们可以定义一个全局可以访问的public static final的,而不是在每个使用的地方直接写出具体的值。这里maven就有了类似的归类属性:
<properties>
<springframework.version>2.5.6</springframework.version>
<\properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${springframework.version}</version>
</dependency>
</dependencies>
jetty-maven-plugin插件来运行Web应用是非常方便的,因为它可以配置成能定期扫描Web应用的任何改变和自动部署Web应用。这就可以消除开发周期中编译和部署的步骤从而更加富有成效。你使用的IDE时对项目做的任何改变,都将直接自动导入到当前运行的web容器里,使您可以立即对其进行测试,立竿见影。
使用上要现在settings.xml里加上这个
<settings>
<pluginGroups>
<pluginGroup>org.mortbay.jetty</pluginGroup>
</pluginGroups>
</settings>
然后在pom里配置插件使用:
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.10</version>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<stopKey>foo</stopKey>
<stopPort>9999</stopPort>
</configuration>
</plugin>
运行mvn jetty:run -Djetty.port=9999
如果不指定port的话,默认是8080,这样jetty就启动了
依赖包的pom注入,一般可以借助网页:http://search.maven.org/,还是挺好用的。
相关推荐
maven学习笔记maven学习笔记maven学习笔记
maven学习教程分享
Maven学习极品,对于初学者而言非常好的资料,极力推荐
maven学习笔记,包含maven插件,maven的安装,中央仓库,自定义本地仓库等安装方法。
Maven常用命令 Maven Maven学习
maven学习文档,包含常见错误和docker的集成,包含多模块开发,不同的profile的开发,和一些插件基础属性说明
maven插件的学习demo
maven学习笔记,里面有maven的学习路线图,以及maven的核心知识
完整maven学习文档,和错误解决
里面包含:两本maven电子书(《Maven权威指南中文版》和《Maven实战》)和两个文档(《在maven和jetty环境下eclipse的调试》、《基于Maven的Spring_+_Spring_MVC_+_Mybatis的环境搭建》),内容皆精品。
该资料主要讲maven的基础用法,安装和使用等。还有maven常常被使用到的一些命令和用法。注意事项等。
maven学习国内第一本书 喜欢的可以下过来看个究竟哦 值得推荐
Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期...
官方文档:apache-maven Maven快速入门 《Maven权威指南》中文版 Better_Builds_With_Maven(英文版)
Maven学习文档及安装包Maven学习文档及安装包Maven学习文档及安装包Maven学习文档及安装包
maven学习与命令
Maven学习教程分享
Maven学习基础文档,供初学者使用,快速掌握maven技术。
Maven学习文档
Maven学习笔记,为个人在网上学习搜集和总结的文档