一、构建Jave项目
1.1、创建Jave Project
1、使用mvn archetype:generate命令,如下所示:
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=myapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
2、使用mvn archetype:create命令,如下所示:
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=myapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
mvn archetype:create在3.0版本以上被废弃,使用会出现构建错误。
使用"mvn archetype:generate"命令创建一个java项目的过程如下图所示:
BUILD SUCCESS就表示项目构建成功,在当前目录下构建了一个Java Project叫做hello-world。
构建好的Java项目的目录结构如下:
可以看到,Maven帮我们创建的项目是一个标准的Maven项目,不过目前Maven只是帮我们生成了src/main/java(存放项目的源代码)和src/test/java(存放测试源代码)这两个目录,但实际项目开发中我们一般都会有配置文件,例如log4j.properties,所以我们还需要手动创建src/main/resources(存放项目开发中用到的配置文件,如存放log4j.properties等)和src/test/resources(存放测试时用到的配置文件),如下图所示:
然后我们就可以将创建好的myapp项目导入到Eclipse中进行开发了,如下图所示:
1.2、JavaProject的pom.xml文件说明
通过Maven构建的JavaProject,在项目的根目录下都会存在一个pom.xml文件,进入myapp目录,可以看到有一个pom.xml文件,这个文件是Maven的核心。
1、pom意思就是project object model。
2、pom.xml包含了项目构建的信息,包括项目的信息、项目的依赖等。
3、pom.xml文件是可以继承的,大型项目中,子模块的pom.xml一般都会继承于父模块的pom.xml
pom.xml文件的内容如下:
1 <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"> 3 <modelVersion>4.0.0</modelVersion> 4 5 <groupId>com.jaeson.maven</groupId> 6 <artifactId>hello-world</artifactId> 7 <version>1.0-SNAPSHOT</version> 8 <packaging>jar</packaging> 9 10 <name>myapp</name> 11 <url>http://maven.apache.org</url> 12 13 <properties> 14 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 15 </properties> 16 17 <dependencies> 18 <dependency> 19 <groupId>junit</groupId> 20 <artifactId>junit</artifactId> 21 <version>3.8.1</version> 22 <scope>test</scope> 23 </dependency> 24 </dependencies> 25 </project>
pom.xml文件的节点元素说明:
<project> pom文件的顶级节点
<modelVersion> object model版本,对Maven2和Maven3来说,只能是4.0.0
<groupId> 项目创建组织的标识符,一般是域名的倒写
<artifactId> 定义了项目在所属组织的标识符下的唯一标识,一个组织下可以有多个项目
<version> 当前项目的版本,SNAPSHOT,表示是快照版本,在开发中
<packaging> 打包的方式,有jar、war、ear等
<name> 项目的名称
<url> 项目的地址
<properties> 属性配置,比如:<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<dependencies> 构建项目依赖的jar
其中由groupId、artifactId和version唯一的确定了一个项目坐标
1.3、使用Maven编译-测试-打包-安装项目
1.3.1、编译
编译源程序,进入命令行,切换到myapp目录,执行命令:mvn clean compile。
编译成功,在myapp目录下多出一个target目录,target\classes里面存放的就是编译后的class文件。
1.3.2、测试
进入命令行,切换到myapp目录,执行命令:mvn clean test。
测试成功,在myapp\target目录下会有一个test-classes目录,存放的就是测试代码的class文件。
1.3.3、打包
进入命令行,切换到myapp目录,执行命令:mvn clean package,执行打包命令前,会先执行编译和测试命令。
构建成功后,会在target目录下生成hello-world-1.0-SNAPSHOT.jar包,如下图所示:
1.3.4、安装
进入命令行,切换到my-app目录,执行命令:mvn clean install ,执行安装命令前,会先执行编译、测试、打包命令。
构建成功,就会将项目的jar包安装到本地仓库。
1.3.5、运行jar包
进入命令行,切换到myapp目录,执行命令:java -cp target\hello-world-1.0-SNAPSHOT.jar com.jaeson.maven.App。
二、构建JavaWeb项目
2.1、创建JavaWeb项目
1、使用mvn archetype:generate命令,如下所示:
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=myWebApp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
使用"mvn archetype:generate"命令创建一个javaWeb项目。
创建好的JavaWeb项目的目录结构如下:
创建好的JavaWeb项目中目前只有src/main/resources目录,因此还需要手动添加src/main/java、src/test/java、src/test/resources。
接着我们就可以将创建好的JavaWeb导入Eclipse中进行开发了,如下图所示:
2.2、使用Maven打包发布Web项目
Maven帮我们创建的JavaWeb项目是一个空的项目,只有一个index.jsp页面,我们使用Maven将Web项目打包发布运行。
在命令行切换到myWebApp目录,执行:mvn package,构建成功后,myWebApp目录目录下多了一个target目录,在这个目录下会打包成myWebApp目录.war,把这个war包拷贝到Tomcat的发布目录下就可以运行了。如下图所示:
打包成功,在myWebApp\target目录下生成了一个myWebApp.war文件,如下图所示:
将myWebApp.war放到tomcat服务器中运行,如下图所示:
三、Maven创建项目的命令说明
mvn archetype:create或者mvn archetype:generate 固定写法
-DgroupId 组织标识(包名)
-DartifactId 项目名称
-DarchetypeArtifactId 指定ArchetypeId,maven-archetype-quickstart,创建一个Java Project;maven-archetype-webapp,创建一个Web Project
-DinteractiveMode 是否使用交互模式
archetype是mvn内置的一个插件,create任务可以创建一个java项目骨架,DgroupId是软件包的名称,DartifactId是项目名,DarchetypeArtifactId是可用的mvn项目骨架,目前可以使用的骨架有:
- maven-archetype-archetype
- maven-archetype-j2ee-simple
- maven-archetype-mojo
- maven-archetype-portlet
- maven-archetype-profiles (currently under development)
- maven-archetype-quickstart
- maven-archetype-simple (currently under development)
- maven-archetype-site
- maven-archetype-site-simple
- maven-archetype-webapp
每一个骨架都会建相应的目录结构和一些通用文件,最常用的是maven-archetype-quickstart和maven-archetype-webapp骨架。maven-archetype-quickstart骨架是用来创建一个Java Project,而maven-archetype-webapp骨架则是用来创建一个JavaWeb Project。
不得不说,Maven的确是一个很好的项目构建工具。掌握好Maven对于项目开发是非常有帮助的。
四、将Web项目自动部署到tomcat服务器
4.1、在pom.xml文件中配置tomcat服务器
配置web项目的pom.xml文件,配置如下:
1 <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/maven-v4_0_0.xsd"> 3 <modelVersion>4.0.0</modelVersion> 4 <groupId>com.jaeson.maven</groupId> 5 <artifactId>WebProject</artifactId> 6 <packaging>war</packaging> 7 <version>0.0.1-SNAPSHOT</version> 8 <name>WebProject Maven Webapp</name> 9 <url>http://maven.apache.org</url> 10 <dependencies> 11 <dependency> 12 <groupId>junit</groupId> 13 <artifactId>junit</artifactId> 14 <version>3.8.1</version> 15 <scope>test</scope> 16 </dependency> 17 </dependencies> 18 19 <!-- 将Web项目自动部署到tomcat服务器的相关 配置信息--> 20 <build> 21 <!-- 将WebProject项目打包成WebProject.war自动部署到tomcat服务器的webapps目录下面 --> 22 <finalName>WebProject</finalName> 23 <plugins> 24 <plugin> 25 <groupId>org.codehaus.cargo</groupId> 26 <artifactId>cargo-maven2-plugin</artifactId> 27 <version>1.2.3</version> 28 <configuration> 29 <container> 30 <!-- 指明使用的tomcat服务器版本 --> 31 <containerId>tomcat7x</containerId> 32 <!--指明tomcat服务器的安装目录 --> 33 <home>D:/apache-tomcat-7.0.53</home> 34 </container> 35 <configuration> 36 <type>existing</type> 37 <!--指明tomcat服务器的安装目录 --> 38 <home>D:/apache-tomcat-7.0.53</home> 39 </configuration> 40 </configuration> 41 <executions> 42 <execution> 43 <id>cargo-run</id> 44 <phase>install</phase> 45 <goals> 46 <goal>run</goal> 47 </goals> 48 </execution> 49 </executions> 50 </plugin> 51 </plugins> 52 </build> 53 </project>
4.2、将web项目发布到tomca服务器的webapps目录
选中Web项目(或者选中Web项目的pom.xml文件)→【Run As】→【Maven install】,如下图所示:
执行完【Maven install】命令之后,就可以将WebProject项目打包成WebProject.war包发布到tomca服务器的webapps目录下,如下图所示:
测试部署好的Web项目,如下图所示:
浏览器正常输出了index.jsp页面中的内容,这说明我们的部署成功了。这就是在Eclipse中使用Maven将Web项目自动部署到tomcat服务器的过程。