我为什么要用到Maven?

  1. 为了解决java各个框架的依赖问题。不用再到处找框架,找jar包下载。现在越来越多的框架已经默认是提供Maven的地址而不是提供jar下载了,比如 spring framework
  2. 越来越多的paas支持直接git或者svn来自动编译运行Maven工程了。

新建工程

  1. 下载maven并解压,在Intellij IDEA中配置好其位置。

  2. 新建项目,选择maven,暂时先不选择archetype,从空工程开始吧。

  3. GroupId和ArtifactId我理解成类似于包和类名。

  4. 按部就班的新建完一个工程后大概就是这样的了。IDE会有一个提示在右上角,开启自动导入即可。

  5. 完成之后,静待程序自动导入所有的包,工程结构是这样的。

  6. 添加web framework支持,在工程文件夹上点击右键-Add Framework Support

这个时候不用勾选其他框架支持,因为勾选其他支持是需要添加jar包的,这样使用maven的作用就不明显了(对于我来说)。
7. 静待之后,整个工程结构就是这样的了。

各个文件夹的作用

web-存放网页资源 
src/main/java-存放java代码
src/main/resources-存放各类配置文件,比如各个框架,甚至hbm.xml也要放在这个文件夹下
test-测试单元(目前还没使用到)

配置本机测试环境

这是一个较为繁琐的办法 现在工程是无法在本机运行的,需要Run-Edit Configurations-添加一个tomcat服务器

这个时候就可以运行Hello world了。

添加框架支持

先使用struts框架吧,在pom.xml中添加好依赖。

<dependencies>
    <!--struts-->
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>2.3.16.3</version>
    </dependency>
</dependencies>

在web.xml里面配置好filter

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

再次运行,Tomcat居然报错了。

十一月 10, 2014 12:04:38 上午 org.apache.catalina.core.StandardContext filterStart
严重: Exception starting filter struts2
java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

等等,maven不是有自动导入依赖吗?这怎么还是报找不到类?原因其实很简单,maven的依赖,只有maven的编译(运行)指令能找到这些包。而本机Tomcat的编译运行和maven是两套不同的系统。要解决这个问题,也挺简单的。
File-Project Structure-Artifacts

把右侧的jar包全部拖到左侧的即可。

这样就算完成了,再次tomcat运行就不会出错了。这个办法有个弊病就是:每次添加完依赖,都得在工程结构里面添加新的包。因为没有使用maven的编译和运行 下一步就是使用maven来打包了。(未完)

Update

使用maven打包在本地Tomcat运行