上篇跟大家聊了聊maven的简单使用,之前也写了一篇搭建基于SSI(struts2,spring,ibatis)的javaEE开发环境的文章,但是那篇只是给初学者搭建一个简单的SSI应用的框架,其实我们发现问题了,jar越来越多,管理起来越来越混乱,在实际工作中,面向企业的开发中一个项目将会有更多的jar,更多的是一个团对对外做一个service,然后将service打包成jar,供其他团队使用。

  开始的时候可以通过聊天工具等将jar传给其他团队,但是一旦团队多了,jar包多了,这种传输还忙的过来吗?如果对jar升级呢,是不是又得重新传输一遍?是不是非常的不方便,而且又容易造成错误,因此迫切希望一种能管理jar的工具,实现一个团队上传到某个资源处,其他团队直接下载,当更新jar的时候,只需要修改版本号便可实现对service的更新,这种工具之一便是maven。

在本篇,将利用maven手把手教大家构建基于SSI(struts2、spring、ibatis)的java ee开发环境。

如果大家对maven还不够了解,请自己百度吧,如果对maven环境的搭建不熟悉,请参考LZ的上一篇用maven来创建web工程 。

好了,废话不多说了,开始进入正题。

1.构建maven web应用

利用mvn archetype:generate -DgroupId=com.yihaodian.backend -DartifactId=mywebapps  -DarchetypeArtifactId=maven-archetype-webapp -Dversion=1.0 构建一个maven应用,然后进入到项目执行mvn clean compile   ,结束后执行mvn eclipse:eclipse 、

这样就创建好项目了,然后导入到eclipse中。

当然要使eclipse支持maven,还需要下载一个插件m2e,这里就不详细展开了,大家可以参考Eclipse 安装SVN、Maven插件 - 雨之殇 - 博客园

2.搭建好目录结构,导入的工程(本篇为mywebapps)还需要改造一下目录结构

如图

3.移植之前没有经过maven的工程(搭建基于SSI(struts2,spring,ibatis)的javaEE开发环境中搭建的工程)中的一些类文件和配置文件到本工程中。

4.pom.xml文件改造:

对需要的jar文件添加maven支持。

  <properties>
<!-- struts2 -->
<commons-fileupload.version>1.2.1</commons-fileupload.version>
<commons-io.version>1.3.2</commons-io.version>
<commons-lang.version>2.5</commons-lang.version>
<commons-logging.version>1.1.1</commons-logging.version>
<freemarker.version>2.3.16</freemarker.version>
<javassist.version>3.14.0-GA</javassist.version>
<struts2-core.version>2.2.1.1</struts2-core.version>
<xwork-core.version>2.2.1.1</xwork-core.version>
<!-- struts2对json支持 -->
<struts2-json-plugin.version>2.2.1.1</struts2-json-plugin.version>
<!-- spring -->
<spring.version>2.5.6.SEC02</spring.version>
<struts2-spring-plugin.version>2.2.1.1</struts2-spring-plugin.version>
<!-- spring AOP -->
<aspectjrt.version>1.5.4</aspectjrt.version>
<aspectjweaver.version>1.5.4</aspectjweaver.version>
<cglib-nodep.version>2.2</cglib-nodep.version>
<!-- spring jdbc -->
<commons-dbcp.version>1.4</commons-dbcp.version>
<commons-pool.version>1.5.4</commons-pool.version>
<!-- spring 测试框架 -->
<spring-test.version>2.5.6</spring-test.version>
<!-- mysql -->
<mysql-connector-java.version>5.1.25</mysql-connector-java.version> <!-- ibatis -->
<ibatis-sqlmap.version>2.3.4.726</ibatis-sqlmap.version> <!-- log4j日志 -->
<log4j.version>1.2.16</log4j.version> <!-- junit单元测试 -->
<junit.version>4.4</junit.version> <!-- maven个性化定制 -->
<maven-dependency-plugin.version>2.1</maven-dependency-plugin.version>
<maven-war-plugin.version>2.1.1</maven-war-plugin.version>
<maven-antrun-plugin.version>1.6</maven-antrun-plugin.version>
<maven-compiler-plugin.version>2.3.2</maven-compiler-plugin.version>
<maven-eclipse-plugin.version>2.8</maven-eclipse-plugin.version>
<maven-assembly-plugin.version>2.2</maven-assembly-plugin.version> <!-- 其他 -->
<commons-beanutils.version>1.8.3</commons-beanutils.version>
<commons-collections.version>3.2</commons-collections.version>
<tomcat-jdbc.version>7.0.32</tomcat-jdbc.version>
<aopalliance.version>1.0</aopalliance.version>
<servlet-api.version>2.5</servlet-api.version>
<commons-codec.version>1.6</commons-codec.version>
<ezmorph.version>1.0.5</ezmorph.version> </properties>
<dependencies>
<!-- struts2 -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>${commons-fileupload.version}</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>${commons-lang.version}</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>${commons-logging.version}</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.struts.xwork</groupId>
<artifactId>xwork-core</artifactId>
<version>${xwork-core.version}</version>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>${javassist.version}</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>${struts2-core.version}</version>
<exclusions>
<exclusion>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</exclusion>
<exclusion>
<groupId>opensymphony</groupId>
<artifactId>ognl</artifactId>
</exclusion>
</exclusions>
<type>jar</type>
<scope>compile</scope>
</dependency>
<!-- freemarker -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>${freemarker.version}</version>
<type>jar</type>
<scope>compile</scope>
</dependency> <!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
<type>jar</type>
<scope>compile</scope>
</dependency> <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
<type>jar</type>
<scope>compile</scope>
</dependency> <!-- struts2与spring集成 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>${struts2-spring-plugin.version}</version>
<type>jar</type>
<scope>compile</scope>
<exclusions>
<exclusion><!-- 排除spring-core,以避免版本冲突 -->
<groupId>org.springframework</groupId>
<artifactId>sping-core</artifactId>
</exclusion>
</exclusions>
</dependency> <!-- Sppring AOP -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectjweaver.version}</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectjrt.version}</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib-nodep</artifactId>
<version>${cglib-nodep.version}</version>
<type>jar</type>
<scope>compile</scope>
</dependency> <!-- spring jdbc -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>${commons-dbcp.version}</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>commons-pool</groupId>
<artifactId>commons-pool</artifactId>
<version>${commons-pool.version}</version>
<type>jar</type>
<scope>compile</scope>
</dependency> <!-- Spring测试框架 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring-test.version}</version>
<scope>test</scope>
</dependency> <!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector-java.version}</version>
</dependency>
<!-- ibatis -->
<dependency>
<groupId>org.apache.ibatis</groupId>
<artifactId>ibatis-sqlmap</artifactId>
<version>${ibatis-sqlmap.version}</version>
</dependency> <!-- log4j日志 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency> <!--
以下部分是为了兼容Tomcat7做准备,如果已经使用了Tomcat7的话可以不引入
其中版本号为7.0.32,是为了兼容最新的Tomcat7版本号,其代码与7.0.30完全相同(通过MD5逐一校验每个Java文件之后确认),之前已经部署了的Pool可以不用修改。
-->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
<version>${tomcat-jdbc.version}</version>
</dependency> <!-- JUnit start -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency> <dependency>
<groupId>aopalliance</groupId>
<artifactId>aopalliance</artifactId>
<version>${aopalliance.version}</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>${servlet-api.version}</version>
<type>jar</type>
<scope>compile</scope>
</dependency> <dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>${commons-beanutils.version}</version>
<type>jar</type>
<scope>compile</scope>
</dependency> <dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>${commons-collections.version}</version>
</dependency>
<!-- struts2对json支持 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-json-plugin</artifactId>
<version>${struts2-json-plugin.version}</version>
<type>jar</type>
</dependency>

说明:(1).此处为了maven的升级以及版本公用,用到了maven的properties属性,在properties中定义变量,然后在全文便可以对其使用,采用${变量名}的语法。

   (2).本文加了相对比较多的jar,并作了比较详细的注释,大家要是用不到,可以去掉一些,有些jar不是必须的

5.使maven将jar包打包到指定地点:

此处我是将mavan打包到工程的src/main/webapp/WEB-INF/lib,方便开发调试。

 <!-- 复制jar包到WEB-INF/lib以便开发调试 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>${maven-dependency-plugin.version}</version>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>src/main/webapp/WEB-INF/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>

6生成war包,并生成MD5加密

 <!-- 生成war包,并写SVN当前版本号1 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>${maven-war-plugin.version}</version>
<configuration>
<warName>${project.artifactId}-${project.version}-${SVN.committedRevision}</warName>
<packagingExcludes>statics/**,statics-111/**</packagingExcludes>
</configuration>
</plugin> <!-- 生成MD5校验文件1 -->
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>${maven-antrun-plugin.version}</version>
<executions>
<execution>
<phase> package </phase>
<configuration>
<target>
<checksum>
<fileset dir="target">
<include name="*" />
</fileset>
</checksum>
</target> </configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>

这样,利用maven构建的基于SSI框架的J2EE工程就搭建好了。

唉,本希望上传我搭建好的工程给大家,供大家下载,无奈无法上传附件,只好作罢,有需要的小伙伴们直接留言吧,我直接发给你。

ps:现在我已经将工程上传至github:https://github.com/shunyang/mywebapps

自己动手用maven构建基于SSI的java EE应用的更多相关文章

  1. maven-bundle-plugin插件, 用maven构建基于osgi的web应用

    maven-bundle-plugin 2.4.0以下版本导出META-INF中的内容到MANIFEST.MF中 今天终于把maven-bundle-plugin不能导出META-INF中的内容到Ex ...

  2. Struts2+Spring3+Hibernate3+Maven构建(基于Eclipse)

    长时间不做后台了,整理一下资料,以便翻阅. Eclipse.JDK安装略…… Maven下载地址:http://maven.apache.org/download.cgi 版本比较新的Eclipse基 ...

  3. Maven学习(2) - Maven构建多模块Java工程

    概述 项目开发时,通常会将项目分为多个模块进行开发,本文讨论如何用Maven构建多模块的Java工程. 软件环境 Java:1.6.0_26 Maven:3.1.1 OS:WindowXP SP3 项 ...

  4. 基于Maven构建整合SpringMVC+Mybtis+Druid

    前几天趁空闲时间整合了下SpringMVC+Mybatis+Druid,这里小记录下,这个Demo是基于Maven构建的,数据源用的是阿里巴巴温少的开源项目Druid,数据库用的是Mysql. 由于E ...

  5. 基于dubbo源码包通过Maven构建dubbo的详细步骤

    通过Maven构建dubbo 既然可以下载得到源码以及发布包,那么为什么要去构建dubbo呢?,我们先来看下dubbo的主要模块: 我们不仅要使用dubbo的核心框架,还要使用它的一些服务,比如管理控 ...

  6. Spring 3整合Quartz 1实现定时任务一:常规整合(基于maven构建)

    Spring配置Quartz例子(基于maven构建) 在Spring中使用Quartz有两种方式实现:第一种是任务类继承QuartzJobBean,第二种则是在配置文件里定义任务类和要执行的方法,类 ...

  7. Redhat上为java Maven项目构建基于Jenkins + Github的持续集成环境

    在Redhat enterprise 6.5 的服务器上,为在gutub 上的 java mvaen项目构建一个持续集成环境,用到了Jenkins.因公司的服务器在内网,访问外网时要通过代理,所以为m ...

  8. Jenkins日常运维笔记-重启数据覆盖问题、迁移、基于java代码发版(maven构建)

    之前在公司机房部署了一套jenkins环境,现需要迁移至IDC机房服务器上,迁移过程中记录了一些细节:1)jenkins默认的主目录放在当前用户家目录路径下的.jenkins目录中.如jenkins使 ...

  9. 基于Maven构建的Spring+Mybatis项目

    项目的目录结构: 1.基于Maven构建Web项目 参考:基于Maven构建Web项目 2.导入项目依赖 Spring 核心容器(Beans.Core.Context.Context support. ...

随机推荐

  1. 浏览器扩展系列————异步可插入协议(pluggable protocol)的实现

    原文:浏览器扩展系列----异步可插入协议(pluggable protocol)的实现 IE中有很多我们比较熟悉的协议,如http,https,mailto,ftp等.当然你也可以实现自己定义的协议 ...

  2. new 和delete

    转自:http://www.cnblogs.com/charley_yang/archive/2010/12/08/1899982.html 一直对C++中的delete和delete[]的区别不甚了 ...

  3. 随记两个SHELL文本处理

    1,对于AWK通配符的处理 例如文本: AAAAAAAA(CZ航母STYLE+CZ航母STYLE+CZ航母STYLE+CZ航母STYLE);XXXX;CCCCC(F22战机+F22战机);33333( ...

  4. MYSQL LIKE 区分大小写匹配

    原文 MYSQL LIKE 区分大小写匹配 MYSQL使用LIKE匹配时默认是不区分大小写的.例:select * from table_name where a like 'wss%'select ...

  5. C#框架

    从零开始编写自己的C#框架(1)——前言   记得十五年前自学编程时,拿着C语言厚厚的书,想要上机都不知道要用什么编译器来执行书中的例子.十二年前在大学自学ASP时,由于身边没有一位同学和朋友学习这种 ...

  6. 对象javascript

    //对象 var lennon=Object(); lennon.name="John"; lennon.year=1940; lennon.living=false; conso ...

  7. EA强大的绘图工具---设计数据库表格

    关于EA这个优秀的软件是从师哥哪里听来的,自己瞎点了点,感觉也没什么.近期和和智福加上一个师哥合作敲机房收费系统时,想到之前听人说EA非常强大,便随便找了找关于EA使用的帮助手冊.果然惊喜-- 如题, ...

  8. CodeSmith

    完美解决CodeSmith无法获取MySQL表及列Description说明注释的方案   问题描述: CodeSmith是现在比较实用的代码生成器,但是我们发现一个问题: 使用CodeSmith编写 ...

  9. [转] 关于 Eclipse 导出 Android项目 JavaDoc 详细过程

    关于Eclipse 导出JavaDoc过程中,遇到的问题 ,google 了一下 ,网友们 总说不一 ,最终 还是 搞定了 现在分享给大家 希望对大家有所帮助 用Eclipse默认的 JavaDoc需 ...

  10. Roslyn 编译平台概述

    在Language Feature Status上面看到,其实更新的并不是特别多,为了不会误导看了C# 6.0 功能预览 (一)的园友,现在把官方的更新列表拿了过来,供大家参考 C# 6.0 功能预览 ...