以前都是碎片化地学习maven,最近才开始系统地学习。好吧,那就一点一点地开始做吧,学习还不都是为了在项目中应用,那就从做一个项目开始吧。
前提是已经安装了maven。我本地的jdk版本是7。
首先看一下整个项目工程的结构。
从图片中可以很清晰地看出各个模块的依赖关系。
好了,开始吧。
1、eclipse默认自带maven插件,就不用安装了。
2、配置maven仓库。
把setting.xml文件复制到m2目录下,并配置本地仓库,修改localRepository标签即可。<localRepository>D:\maven\repo</localRepository>
然后在eclipse中做相应的配置。
配置好了,下面就开始创建工程啦!
因为我们项目中有6个模块,为了方便构建及共用相同的配置,我们需要建一个父模块把6个模块都包含进去。
1、创建父模块
空白处右键 New ->Other…
Next
Next
注意这里选择pom类型。Finish。第一次创建工程会下载maven插件,需要给它一点时间。
完成后,删掉src目录,我们只要一个pom.xml就够了。
设置一下项目编码
2、接下来是创建6个子工程了。
首先我们来创建dao模块。
test-parent->右键->New->Other->Maven Module->Module Name:test-dao ->Next->选择maven-archetype-quickstart->Next->修改Package:com.rice.test.dao->Finish.
然后用相同的方式创建util模块.
2个子模块创建完成后,会发现test-parent的pom文件多了这么一个代码,
<modules>
<module>test-dao</module>
<module>test-util</module>
</modules>
这说明test-parent有2个子模块。
这时因为子模块的<groupId>com.rice.test</groupId>
和<version>0.0.1-SNAPSHOT</version>
跟父模块的groupId/version重复了,所以我们要把它删除掉。
删完了后,发现problems还是有警告
是编译环境的jdk的版本问题,我们修改一下就好了。
好了,接下来该到创建service模块了。跟dao模块一样,开始创建吧!
创建完成后,删除pom里面的groupId和version,然后修改jdk和编译环境版本为1.7。
这里的service模块跟前面2个模块有点不一样的地方是,它要依赖前面2个子模块,所以要在pom文件中加入
<dependency>
<groupId>com.rice.test</groupId>
<artifactId>test-dao</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.rice.test</groupId>
<artifactId>test-util</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
“
加入后发现maven依赖包中多了2个项目
接下来,就该创建顶层的portal模块了。跟前面的模块创建方式差不多是一样的。唯一不同的地方是在选择类型的时候,需要选择maven-archetype-webapp,因为我们需要创建的是一个web项目。创建完成后,删除groupId和version,修改jdk和编译环境版本,添加对service的依赖。
根据依赖的传递性,这时会发现test-portal模块的引用项目里把test-dao和test-util也引进来了。
接下来再以相同的方式创建另外2个web模块,console和api。
到此。我们的所有模块都创建完成了,是不是大功告成了呢?是的!
但是!我们可以做得更优雅!哈哈!
看看怎么做得更好吧。现在我们的所有子模块的pom里面都有这么一段代码
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
这些共用的东西,我们是不是可以抽到parent里去呢。just do it 。
把下面这段
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
添加到test-parent的pom中,再删掉6个子模块对应的junit dependency 。我们再加入日志的依赖,然后自定义一下统一的版本。
接下来,我们就看看怎么在页面把hello world显示出来。
我打开test-portal,看了一下,这并不是web工程的目录呀,蒙B了。别急,设置一下就好了。
设置完成后,会发现自动生成了一个WebContent目录。
这个目录是没有用的,删掉。我们使用webapp目录就好了。然后设置一下部署目录。
接着,先设置一下tomcat的部署目录,eclipse的默认部署目录是在workspace下的,我们要设置它部署在tomcat目录下。
上面灰色的地方默认是选择第一个的并且是不能更改的,首先要先把tomcat的webapps下的项目先全部删掉,然后clean一下,就可以设置了。
接着,把test-portal添加到tomcat,然后启动,访问http://localhost:8080/test-portal/ 看到index.jsp里面的hello world出来了。哈哈好高兴!!
至此,整个工程就初步搭起来啦!!下一篇研究一下模块与模块之间的相互集成调用,从web页面到底层的dao的调用,及项目工程的发布。