Maven离不开POM文件(工程对象模型,XML文件)。用Maven生成Eclipse JAVA工程是非常方便的,在生成完成后几乎不需要做任何自定义的工作(除了增加依赖)。而生成Eclipse标准动态JavaWeb工程就不那么顺利了,需要手动改几个地方,不过这个修改是一劳永逸的(附件中提供了一个修改好的POM项目,下载后,敲几个命令就可以搞定了)。
1、生成一个Web工程,这个工程不是一个Eclipse标准的动态Web工程。
- mvn archetype:create -DgroupId=com.aboy.webmap -DartifactId=webmap -DarchetypeArtifactId=maven-archetype-webapp
mvn archetype:create -DgroupId=com.aboy.webmap -DartifactId=webmap -DarchetypeArtifactId=maven-archetype-webapp
上面的命令中,有两个是自定义的:
-DgroupId=com.aboy.webmap:生成pom的<groupId>com.aboy.webmap< /groupId>节点,主要是本工程生成的JAR包提给于其它工程依赖时,要用的。对于一个独立的工程,这个可以是随便一个字符串就行了,不过还是推荐使用用意义的字串,因为后面的文章将会介绍多个模块的应用时,就有用了。这个设置可以在生成后修改。
-DartifactId=webmap:将会生成的文件夹名,也是Eclipse中Web工程的名字。这个设置也可以在生成后修改。
2、这条命令执行完后,将会在当前目录下生成一个“webmap”文件夹,这就是一个POM工程了。
该文件夹下有一个“pom.xml”文件和一个“src"目录。
pom.xml文件将是修改的重点。
3、建立相关目录
删除src/main中的webapp目录,而增加java目录;
在src/下增加test目录,与main目录平行;
在src/test目录下增加java和resources目录。
至此,src目录结构为:
src
| --main
| | --java
| | --resources
| --test
| | --java
| | --resources
增加一个WebRoot目录,与src同级,这个目录是干什么的、以及里面的目录结构,我相信就不要说明了。
4、修改pom.xml文件
在</porject>前增中以下内容
- <build>
- <finalName>ROOT</finalName>
- <outputDirectory>WebRoot/WEB-INF/classes</outputDirectory>
- <defaultGoal>install</defaultGoal>
- <plugins>
- <plugin>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>2.0.2</version>
- <configuration>
- <source>1.5</source>
- <target>1.5</target>
- <encoding>GBK</encoding>
- </configuration>
- </plugin>
- <plugin>
- <artifactId>maven-resources-plugin</artifactId>
- <configuration>
- <encoding>GBK</encoding>
- </configuration>
- </plugin>
- <plugin>
- <artifactId>maven-war-plugin</artifactId>
- <configuration>
- <webappDirectory>WebRoot</webappDirectory>
- <warSourceDirectory>WebRoot</warSourceDirectory>
- </configuration>
- </plugin>
- </plugins>
- </build>
<build> <finalName>ROOT</finalName> <outputDirectory>WebRoot/WEB-INF/classes</outputDirectory> <defaultGoal>install</defaultGoal> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.0.2</version> <configuration> <source>1.5</source> <target>1.5</target> <encoding>GBK</encoding> </configuration> </plugin> <plugin> <artifactId>maven-resources-plugin</artifactId> <configuration> <encoding>GBK</encoding> </configuration> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <configuration> <webappDirectory>WebRoot</webappDirectory> <warSourceDirectory>WebRoot</warSourceDirectory> </configuration> </plugin> </plugins> </build>
build里的内容也是可以自行修改的,以下几个特别说明下:
<finalName>ROOT</finalName>:发布前执行时,生成ROOT.war文件。
<outputDirectory>WebRoot/WEB-INF/classes</outputDirectory>:编译后的.class文件和源目录下的文件存放的地方,这个是最关键的。
其它的内容就没有什么可说明的了,看看就知道了,整个文件如下如示:
- <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.aboy.webmap</groupId>
- <artifactId>webmap</artifactId>
- <packaging>war</packaging>
- <version>1.0-SNAPSHOT</version>
- <name>webmap Maven Webapp</name>
- <url>http://obullxl.iteye.com</url>
- <dependencies>
- <!-- logging -->
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.13</version>
- </dependency>
- <!-- test -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
- <build>
- <finalName>ROOT</finalName>
- <outputDirectory>WebRoot/WEB-INF/classes</outputDirectory>
- <defaultGoal>install</defaultGoal>
- <plugins>
- <plugin>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>2.0.2</version>
- <configuration>
- <source>1.5</source>
- <target>1.5</target>
- <encoding>GBK</encoding>
- </configuration>
- </plugin>
- <plugin>
- <artifactId>maven-resources-plugin</artifactId>
- <configuration>
- <encoding>GBK</encoding>
- </configuration>
- </plugin>
- <plugin>
- <artifactId>maven-war-plugin</artifactId>
- <configuration>
- <webappDirectory>WebRoot</webappDirectory>
- <warSourceDirectory>WebRoot</warSourceDirectory>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </project>
<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.aboy.webmap</groupId> <artifactId>webmap</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>webmap Maven Webapp</name> <url>http://obullxl.iteye.com</url> <dependencies> <!-- logging --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.13</version> </dependency> <!-- test --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <build> <finalName>ROOT</finalName> <outputDirectory>WebRoot/WEB-INF/classes</outputDirectory> <defaultGoal>install</defaultGoal> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.0.2</version> <configuration> <source>1.5</source> <target>1.5</target> <encoding>GBK</encoding> </configuration> </plugin> <plugin> <artifactId>maven-resources-plugin</artifactId> <configuration> <encoding>GBK</encoding> </configuration> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <configuration> <webappDirectory>WebRoot</webappDirectory> <warSourceDirectory>WebRoot</warSourceDirectory> </configuration> </plugin> </plugins> </build> </project>
5、生成eclipse工程
pom.xml文件搞定了,剩下的工作就是敲敲命令了,其它的事情让Maven帮我们搞定。
- mvn eclipse:myeclipse
mvn eclipse:myeclipse
6、一些常用的命令
- mvn archetype:create -DgroupId=com.aboy.webmap -DartifactId=webmap -DarchetypeArtifactId=maven-archetype-webapp
- mvn clean:删除target目录下所有生成的war,jar
- mvn install:生成war,jar包
- mvn eclipse:eclipse:增加eclipse属性(.project, .classpath文件)
- mvn eclipse:myeclipse:增加eclipse属性(增加web属性)mvn eclipse:clean:去掉eclipse属性
- mvn eclipse:eclipse -DdownloadJavaDocs=true:在下载依赖包时,也下载其JavaDocs文件
- mvn test:运行应用程序中的单元测试
- mvn package:依据项目生成jar文件
- mvn install:将项目的jar文件添加到本地的Maven库中
- mvn site:生成项目相关信息的网站
- mvn clean:清除目标目录中的生成结果
- mvn eclipse:eclipse:生成Eclipse项目文件