上篇文章我大致说了什么是maven以及maven的安装,下面具体讲解maven的如何使用,在讲解过程中其实也是一个自我学习过程。
讲解maven的使用需要结合maven的u具体项目,那么首先我们创建一个
点击myeclipse 的new 找到ohthers,在其中找到maven object, 然后点击next.如图:
然后点击next到下一步
然后这一步也直接点击next
看到上面红色部分不,这表示创建两种不同的项目,上面一种表示创建一个普通的java项目,下面的wepapp表示创建一个web项目,这两种也是我们常用的,
现在,我们选择下面的一种点进去看看是什么,如图:
上面需要填三个东西,分别是 groupId,artifactId,VersionId,这三个分别代表什么呢?后面再说,现在我们先填上,如下:
然后点击finash完成创建,然后创建完成,项目是什么样子的呢?如下:
这个就是创建的项目,这个里面有个pom.xml文件,它是整个项目的核心,所有的jar都在它里面 如下:
到这里,我们又看到了这三个id groupId artifactID version,那么他们分别什么意思?
groupId:从名字上可以看出,它表示团体,公司,小组,组织的意思,团体的约定是,它以创建这个项目的组织名称的逆向域名开头。比如apache公司下面有个项目叫做tomcat,那么这个项目的groupId就应该为org.apache开头。
artifactId表示一个项目的单独表示符,比如tomcat就是一个单独的表示符、
version 表示版本,一个项目也许会有很多版本,发布的项目有一个固定的版本标识来指向该项目的某一个特定的版本,而正在开发中的项目可以用一个特殊的标识,这种标识给版本加上一个"SNAPSHOT"的标
一个项目的 groupId:artifactId:version使之成为一个独一无二的项目;你不能同时有一个拥有同样的groupId, artifactId和version标识的项目记。
它们就像身份证的Id一样。
说完这个,那么我们得说一说maven的pom.xml这个配置文件。要想了解pom,我们又必须了解maven的几个新词和定义。
maven的仓库:
Maven仓库就是放置所有JAR文件(WAR,ZIP,POM等等)的地方,所有Maven项目可以从同一个Maven仓库中获取自己所需要的依赖JAR,这节省了磁盘资源。此外,由于Maven仓库中所有的JAR都有其自己的坐标,该坐标告诉Maven它的组ID,构件ID,版本,打包方式等等,因此Maven项目可以方便的进行依赖版本管理。你也不在需要提交JAR文件到SCM仓库中,你可以建立一个组织层次的Maven仓库,供所有成员使用。
简言之,Maven仓库能帮助我们管理构件(主要是JAR)。
本地仓库 vs. 远程仓库
运行Maven的时候,Maven所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。
比如说,你的项目配置了junit-3.8的依赖,在你运行mvn test
pom.xml的继承、聚合与依赖
<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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.zoujun.blog</groupId>
<artifactId>blog</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>blog Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.6.4.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.6.4.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>3.6.4.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>4.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>3.6.4.Final</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>commons-pool</groupId>
<artifactId>commons-pool</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
</dependencies>
<build>
<finalName>wdxy</finalName>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<!-- 注意此处的url -->
<url>http://localhost:8080/manager/text</url>
<server>tomcat7</server> <!-- 此处的名字必须和setting.xml中配置的ID一致 -->
<path>/wdxy</path> <!-- 此处的名字是项目发布的工程名 -->
<username>admin</username>
<password>admin</password>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<packagingExcludes>WEB-INF/web.xml</packagingExcludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
<!-- <tomcat-users> <role rolename="admin"/> <role rolename="manager"/> <role
rolename="manager-gui"/> <role rolename="manager-script"/> <user username="admin"
password="admin" roles="admin,manager,manager-gui,manager-script"/> <tomcat-users/> -->