第一步:建立项目
主要工作是选择一个目录,用命令行进入当前目录,想好自己的包名、项目名、项目类型,我们就以建立web项目为例
在命令行下输入:(maven会问你是否确认,输入Y就行)
其中DarchetypeArtifactId 参数表示建立项目的类型,不写就是最简单的java项目,还有其他类型。
DgroupId参数表示包名。
DartifactId项目名称。
Dversion项目版本。
DartifactId取值:
* 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的标准目录结构差距还是很大的,但是这个Maven指令很SB的没给我们把目录建全,我们鄙视它一下,要自己去建立我们需要的目录。
基本上一个Web项目的标准目录如下:
* src/main/resources
* src/test/java
* src/test/resources
* src/main/webapp
* src/main/config(如果你的properties文件想独立出来)
目录的建立方式很多,给个命令行的指令,方便一下
至此我们用maven建立的项目算是结束了。现在根目录下面有个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.mycompany.app</groupId> <artifactId>my-app</artifactId> <packaging>war</packaging> <version>1.0.0</version> <name>my-app Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <build> <finalName>my-app</finalName> </build> </project>
剩下的工作就是添加maven仓库,添加依赖Jar包,配置各个Maven插件的版本,这点很重要,插件版本如果不配置,很可能造成插件升级后不兼容你当前的项目,下面简单介绍一下。
首先声明一些常量:
<properties> <!-- 主要依赖库的版本定义(这里只是举例最新版自己去仓库找) --> <spring.version>3.0.4.RELEASE</spring.version> <hibernate.version>3.5.5-Final</hibernate.version> <!-- Plugin的属性定义 --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties>
然后声明我们可以去访问的仓库:
<repositories> <repository> <id>offical</id> <name>Maven Official Repository</name> <url>http://repo1.maven.org/maven2</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>jboss</id> <name>Jboss Repository</name> <url>http://repository.jboss.org/nexus/content/groups/public-jboss/</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>java.net</id> <name>Java.net Repository</name> <url>http://download.java.net/maven/2/</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
再然后声明依赖的Jar包
<dependencies> <!-- spring begin --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <!-- spring aop --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>${aspectj.version}</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>${aspectj.version}</version> </dependency> <dependency> <groupId>cglib</groupId> <artifactId>cglib-nodep</artifactId> <version>${cglib.version}</version> </dependency> <!-- spring end --> <!-- database access begin --> <!-- hibernate --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${hibernate.version}</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-annotations</artifactId> <version>${hibernate.version}</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-ehcache</artifactId> <version>${hibernate.version}</version> </dependency> <!-- newest version in jboss repository --> <dependency> <groupId>javassist</groupId> <artifactId>javassist</artifactId> <version>${javassist.version}</version> </dependency> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc14</artifactId> <version>${oracle.version}</version> </dependency> <!-- spring orm --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> </dependencies>
最后设置插件
<build> <finalName>my-webapp</finalName> <!-- 编译输出目录 --> <outputDirectory> ${basedir}/src/main/webapp/WEB-INF/classes </outputDirectory> <plugins> <!-- compiler插件, 设定JDK版本 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.6</source> <target>1.6</target> <showWarnings>true</showWarnings> </configuration> </plugin> <!-- test插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.6</version> <configuration> <skip>true</skip> <testFailureIgnore>true</testFailureIgnore> <includes> <include>**/*Test.java</include> </includes> </configuration> </plugin> <!-- cobertura插件 --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>cobertura-maven-plugin</artifactId> <version>2.4</version> </plugin> <!-- war插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.1</version> <configuration> <warName>${project.artifactId}</warName> </configuration> </plugin> <!-- resource插件, 设定编码 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.4.3</version> <configuration> <encoding>${project.build.sourceEncoding}</encoding> </configuration> </plugin> <!-- jar插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.3.1</version> <configuration> <archive> <manifest> <addDefaultImplementationEntries>true</addDefaultImplementationEntries> <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries> </manifest> </archive> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.1.2</version> </plugin> <!-- clean插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-clean-plugin</artifactId> <version>2.4.1</version> </plugin> <!-- install插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-install-plugin</artifactId> <version>2.3.1</version> </plugin> <!-- deploy插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>2.5</version> </plugin> <!-- eclipse插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-eclipse-plugin</artifactId> <version>2.5.1</version> <configuration> <sourceExcludes> <sourceExclude>**/.svn/</sourceExclude> </sourceExcludes> <downloadSources>true</downloadSources> </configuration> </plugin> <!-- 依赖jar包插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.1</version> <configuration> <outputDirectory> ${basedir}/src/main/webapp/WEB-INF/lib </outputDirectory> </configuration> </plugin> </plugins> </build>
还有一些其他的设置,这里就不讲了,那个更麻烦,我还没研究明白,呵呵。
剩下的工作就简单了,我们的项目架子已经建好,现在就是要把建好的项目在eclipse下进行开发,所以我们也要做最重要的一步:
其中DdownloadSources是是否下载源代码
Dwtpversion是支持的Web版本
完成这个之后我们就可以在eclipse下导入该项目了。
每次要刷新项目的话执行下面的批处理
@echo off set curdir=%~dp0 set partition=%curdir:~0,1% echo 工程目录:%curdir% %partition%: cd %curdir% echo 清理工作 call mvn clean eclipse:clean echo 构建eclipse工程环境,下载JAR源代码,将项目订制为web项目 call mvn eclipse:eclipse -DdownloadSources=true -Dwtpversion=2.0 echo 生成工程依赖JAR包,放到WEB-INF/lib echo 删除 %curdir%src\main\webapp\WEB-INF\lib\ 下面的jar包 cd %curdir%src\main\webapp\WEB-INF\lib\ del *.jar cd %curdir% call mvn dependency:copy-dependencies echo MAVEN工程构建完成 pause