上篇跟大家聊了聊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. c语言复杂声明解析

    这是个好东西,接触c语言好几年了,第一次看到这东西,惊喜万分. 先提供个分析案例,以后看方便 vector <int> * (*seq_array[]) (int )={func1,fun ...

  2. 瘸腿蛤蟆笔记29-cocos2d-x-3.2 Box2d物理引擎dynamics模块介绍

    转载标明出处:http://blog.csdn.net/notbaron/article/details/38611335 上篇回想 本篇名言:奋斗.寻觅.发现,而不屈服.[诗人丁尼生] 上篇中,我们 ...

  3. POJ 3311 Hie with the Pie floyd+状压DP

    链接:http://poj.org/problem?id=3311 题意:有N个地点和一个出发点(N<=10),给出全部地点两两之间的距离,问从出发点出发,走遍全部地点再回到出发点的最短距离是多 ...

  4. Linux server关闭自己主动

    公司linux server发生错误.mysql server没有理由关闭,我找不到理由.Version: '5.6.13-enterprise-commercial-advanced' socket ...

  5. java设计模式之五原型模式(Prototype)

    原型模式虽然是创建型的模式,但是与工程模式没有关系,从名字即可看出,该模式的思想就是将一个对象作为原型,对其进行复制.克隆,产生一个和原对象类似的新对象.本小结会通过对象的复制,进行讲解.在Java中 ...

  6. PHP 以POST方式提交XML、获取XML,最后解析XML

    以POST方式提交XML // Do a POST $data="<?xml version='1.0' encoding='UTF-8'?> <TypeRsp> & ...

  7. 重新想象 Windows 8.1 Store Apps (81) - 控件增强: 加载本地 html, 智能替换 html 中的 url 引用, 通过 Share Contract 分享 WebView 中的内容, 为 WebView 截图

    原文:重新想象 Windows 8.1 Store Apps (81) - 控件增强: 加载本地 html, 智能替换 html 中的 url 引用, 通过 Share Contract 分享 Web ...

  8. ylb:SQLServer常用系统函数-字符串函数、配置函数、系统统计函数

    原文:ylb:SQLServer常用系统函数-字符串函数.配置函数.系统统计函数 ylbtech-SQL Server:SQL Server-SQLServer常用系统函数 -- ========== ...

  9. 【剑指offer】的功率值

    标题叙述性说明: 实现函数double Power(double base, int exponent),求base的exponent次方.不得使用库函数.同一时候不须要考虑大数问题. 分析描写叙述: ...

  10. leetcode[90] Decode Ways

    题目:如下对应关系 'A' -> 1 'B' -> 2 ... ‘Z’ -> 26 现在给定一个字符串,返回有多少种解码可能.例如:Given encoded message &qu ...