背景
在程序开发过程中,免不了引用jar包和项目打包。以往引用jar包的操作是手动将jar包拷到lib目录下,如果需要更换版本就要将原来的删除,然后拷贝新版本的jar包。使用maven可以通过配置文件来管理jar包的引用,新增、删除和修改只需要更改配置文件即可。 maven也支持项目打包:.jar、.war、tar.gz等等很多复杂的包都支持,而且配置灵活。
Maven简介及使用
Maven官网介绍。 简单来说,maven是大名鼎鼎的Apache下的一个开源工具,可以灵活构造项目,可以动态管理项目依赖jar包等。
安装
官网上的介绍
- 依赖java
- 解压文件到安装目录下 unzip apache-maven-3.3.9-bin.zip
- 添加maven的bin文件夹路径到环境变量中:在.bash_profile中添加PATH=$MAVEN_HOME/bin:$PATH,source ~/.bash_profile 生效
- 查看安装成功:mvn -v 出现类似如下输出,则安装成功。
1 2 3 4 5 6
| Apache Maven 3.2.3 (33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-12T04:58:10+08:00) Maven home: /usr/local/apache-maven-3.2.3 Java version: 1.7.0_71, vendor: Oracle Corporation Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home/jre Default locale: zh_CN, platform encoding: UTF-8 OS name: "mac os x", version: "10.10.5", arch: "x86_64", family: "mac"
|
配置
- 需要在当前用户目录下新建一个 .m2文件夹
- 在.m2目录下配置setting.xml (非必要,有自己的私服则可以配置)
- 上面的setting.xml可以不添加,因为MAVEN_HOME/conf/下有一个默认的setting.xml,需要在.m2下新增一个repository文件夹,用来存放下载的jar包
使用
- web项目中每个模块都有自己的pom.xml文件,在pom文件中配置当前model所依赖的jar包引用,此时maven会自动将jar包下载,并引用。如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <artifactId>study-parent</artifactId> <groupId>com.mystudy.web</groupId> <version>1.0.0-SNAPSHOT</version> <modelVersion>4.0.0</modelVersion> <artifactId>common</artifactId>
<properties> <log4j2-version>2.4.1</log4j2-version> <org.springframework-version>4.2.3.RELEASE</org.springframework-version> </properties>
<dependencies>
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> </dependencies>
</project>
|
- 打包更方便,只需要在pom.xml文件配置后运行响应的命令即可,详细使用方法请点击。下面是个栗子:
- 项目分为多个模块:model、common、dao、service、web五个模块,其中dao/service/web都依赖model和common模块,service依赖dao,web依赖service项目。当我打包的时候model、common、dao、service都应该是jar包,web模块是war包。
- maven默认打jar包,所以只需要配置web模块的pom文件即可:添加 bean,各种详细配置方式请点击
- web模块下pom文件链接
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| <build> <finalName>myStudy</finalName> <defaultGoal>install</defaultGoal> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <skip>true</skip> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.5.1</version> <configuration> <source>1.6</source> <target>1.6</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.3</version> <configuration> <webXml>src/main/webapp/WEB-INF/web.xml</webXml> <webResources> <resource> <directory>webapp/resource/</directory> <filtering>true</filtering> <targetPath>WEB-INF</targetPath> </resource> </webResources> --> </configuration> </plugin> </plugins> </build>
|
- pom文件还有很多灵活的配置,比如filter、resources等等详情请点击
- 父模块的pom文件可以决定打包的顺序,如:,
1 2 3 4 5 6 7 8 9 10 11 12
| <modelVersion>4.0.0</modelVersion> <groupId>com.mystudy.web</groupId> <artifactId>study-parent</artifactId> <packaging>pom</packaging> <version>1.0.0-SNAPSHOT</version> <modules> <module>model</module> <module>common</module> <module>dao</module> <module>service</module> <module>web</module> </modules>
|
- 执行打包命令:mvn clean install,最终会有如下输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary: [INFO] [INFO] study-parent ....................................... SUCCESS [ 0.420 s] [INFO] model .............................................. SUCCESS [ 1.939 s] [INFO] common ............................................. SUCCESS [ 1.664 s] [INFO] dao ................................................ SUCCESS [ 0.089 s] [INFO] service ............................................ SUCCESS [ 0.199 s] [INFO] web ................................................ SUCCESS [ 2.693 s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 7.169 s [INFO] Finished at: 2015-12-03T18:04:46+08:00 [INFO] Final Memory: 27M/222M [INFO] ------------------------------------------------------------------------
|
- 在web模块web/target/目录下会有myStudy.war,这个文件中包含所项目所依赖的所有jar包及编译过后的class文件,直接拷贝到tomcat webapp目录下启动tomcat即可访问。
结语
maven工具极大的方便了开发及打包的方式,而且基于配置后可以很灵活的使用各种带参数的命令,官方文档也很详细。
欢迎拍砖,批评是进步的动力! 谢谢~