Maven使用(1)
项目管理是个高深的问题,代码管理同样也是一个高深的问题。在Java的世界里,Maven作为代码指挥部能够很好的进行代码管理。下面说说Maven在java项目中的使用条款:
1. Maven项目中最主要最核心的东西是pom.xml(其中pom是project object model的缩写),它类似与c世界中的Makefile文件,定义了项目的基本信息,描述了项目该怎么样去构建,构建的文件如何管理,以及项目依赖的jar包等等。
2. Maven项目的pom.xml文件中定义项目的基本信息是groupId,artifaceId以及version。这三个元素可以认为是Maven项目空间中的三维正交立体坐标系,任何的jar、pom以及war都是采用这个三维空间的唯一点,可以进行区分。三者的功能可以从字面上获得,groupId即是组织或者公司的名字,artifaceId定义了当前Maven项目在组织中唯一的Id,而Version是该项目的版本号,其中SNAPSHOP是还处于开发中,不稳定的版本。
3.pom.xml文件最大程度地独立于实际代码,只需要改变pom文件就可以使项目升级,当项目升级后日常的代码开发工作不需要修改pom文件。
4.Maven项目将项目的主代码和测试代码分开,其中主代码默认是放在src/main/java文件下,而测试代码放在src/test/java下。
5.Maven最主要的命令有:mvn clean complie、mvn clean test、mvn clean package、mvn clean install。其中mvn clean compile只是简单的编译,而mvn clean test是编译之后会执行test,同样执行mvn clean package会在执行test之后执行package,mvn clean install会在install之前执行package。但是Maven默认打包的jar是不能够直接运行的,因为带有main方法的类型不会添加到manifest中。为了生成可执行的jar文件,需要借助maven-shade-plugin。具体如何配置插件可以参见:http://stackoverflow.com/questions/10483180/maven-what-is-pluginmanagement
6.不要使用IDE内嵌的Maven,因为无论是eclipse还是netbeans,它们集成的maven都比较新,但不一定稳定,因此往往会和采用命令行输入maven命令使用的maven版本不一致,导致构建形成的不一致。总之,需要将IDE中默认的maven修改为手动安装maven的目录。
7.Maven采用集中仓库的方式来管理代码,因此不同项目中使用相同的jar(三维坐标相同)只会下载一次。