• 自己动手用maven构建基于SSI的java EE应用


      上篇跟大家聊了聊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支持。

      1  <properties>
      2           <!-- struts2 -->
      3           <commons-fileupload.version>1.2.1</commons-fileupload.version>
      4           <commons-io.version>1.3.2</commons-io.version>
      5           <commons-lang.version>2.5</commons-lang.version>
      6         <commons-logging.version>1.1.1</commons-logging.version>
      7         <freemarker.version>2.3.16</freemarker.version>
      8         <javassist.version>3.14.0-GA</javassist.version>
      9         <struts2-core.version>2.2.1.1</struts2-core.version>
     10         <xwork-core.version>2.2.1.1</xwork-core.version>
     11         <!-- struts2对json支持 -->
     12         <struts2-json-plugin.version>2.2.1.1</struts2-json-plugin.version>
     13         <!-- spring -->
     14         <spring.version>2.5.6.SEC02</spring.version>
     15         <struts2-spring-plugin.version>2.2.1.1</struts2-spring-plugin.version>
     16         <!-- spring AOP -->
     17         <aspectjrt.version>1.5.4</aspectjrt.version>
     18         <aspectjweaver.version>1.5.4</aspectjweaver.version>
     19         <cglib-nodep.version>2.2</cglib-nodep.version>
     20         <!-- spring jdbc -->
     21         <commons-dbcp.version>1.4</commons-dbcp.version>
     22         <commons-pool.version>1.5.4</commons-pool.version>
     23         <!-- spring 测试框架 -->
     24         <spring-test.version>2.5.6</spring-test.version>
     25         <!-- mysql -->
     26         <mysql-connector-java.version>5.1.25</mysql-connector-java.version>
     27         
     28         <!-- ibatis -->    
     29         <ibatis-sqlmap.version>2.3.4.726</ibatis-sqlmap.version>
     30         
     31         <!-- log4j日志 -->
     32         <log4j.version>1.2.16</log4j.version>
     33         
     34         <!-- junit单元测试 -->
     35         <junit.version>4.4</junit.version>
     36         
     37         <!-- maven个性化定制 -->
     38         <maven-dependency-plugin.version>2.1</maven-dependency-plugin.version>
     39           <maven-war-plugin.version>2.1.1</maven-war-plugin.version>
     40           <maven-antrun-plugin.version>1.6</maven-antrun-plugin.version>
     41           <maven-compiler-plugin.version>2.3.2</maven-compiler-plugin.version>
     42         <maven-eclipse-plugin.version>2.8</maven-eclipse-plugin.version>
     43         <maven-assembly-plugin.version>2.2</maven-assembly-plugin.version>
     44         
     45         <!-- 其他 -->
     46         <commons-beanutils.version>1.8.3</commons-beanutils.version>
     47         <commons-collections.version>3.2</commons-collections.version>
     48         <tomcat-jdbc.version>7.0.32</tomcat-jdbc.version>
     49         <aopalliance.version>1.0</aopalliance.version>
     50         <servlet-api.version>2.5</servlet-api.version>
     51         <commons-codec.version>1.6</commons-codec.version>
     52         <ezmorph.version>1.0.5</ezmorph.version>
     53         
     54     </properties>
     55   <dependencies>
     56       <!-- struts2 -->
     57           <dependency>
     58             <groupId>commons-io</groupId>
     59             <artifactId>commons-io</artifactId>
     60             <version>${commons-io.version}</version>
     61         </dependency>
     62         <dependency>
     63             <groupId>commons-fileupload</groupId>
     64             <artifactId>commons-fileupload</artifactId>
     65             <version>${commons-fileupload.version}</version>
     66         </dependency>
     67         <dependency>
     68             <groupId>commons-lang</groupId>
     69             <artifactId>commons-lang</artifactId>
     70             <version>${commons-lang.version}</version>
     71             <type>jar</type>
     72             <scope>compile</scope>
     73         </dependency>
     74         <dependency>
     75             <groupId>commons-logging</groupId>
     76             <artifactId>commons-logging</artifactId>
     77             <version>${commons-logging.version}</version>
     78             <type>jar</type>
     79             <scope>compile</scope>
     80         </dependency>
     81             <dependency>
     82             <groupId>org.apache.struts.xwork</groupId>
     83             <artifactId>xwork-core</artifactId>
     84             <version>${xwork-core.version}</version>
     85         </dependency>
     86         <dependency>
     87             <groupId>org.javassist</groupId>
     88             <artifactId>javassist</artifactId>
     89             <version>${javassist.version}</version>
     90             <type>jar</type>
     91             <scope>compile</scope>
     92         </dependency>
     93         <dependency>
     94             <groupId>org.apache.struts</groupId>
     95             <artifactId>struts2-core</artifactId>
     96             <version>${struts2-core.version}</version>
     97             <exclusions>
     98                 <exclusion>
     99                     <groupId>com.sun</groupId>
    100                     <artifactId>tools</artifactId>
    101                 </exclusion>
    102                 <exclusion>
    103                     <groupId>org.springframework</groupId>
    104                     <artifactId>spring-orm</artifactId>
    105                 </exclusion>
    106                 <exclusion>
    107                     <groupId>org.springframework</groupId>
    108                     <artifactId>spring-test</artifactId>
    109                 </exclusion>
    110                 <exclusion>
    111                   <groupId>opensymphony</groupId>
    112                    <artifactId>ognl</artifactId>
    113                </exclusion>
    114             </exclusions>
    115             <type>jar</type>
    116             <scope>compile</scope>
    117         </dependency>
    118     <!-- freemarker -->
    119         <dependency>
    120             <groupId>org.freemarker</groupId>
    121             <artifactId>freemarker</artifactId>
    122             <version>${freemarker.version}</version>
    123             <type>jar</type>
    124             <scope>compile</scope>
    125         </dependency>
    126     
    127     <!-- Spring -->
    128     <dependency>
    129             <groupId>org.springframework</groupId>
    130             <artifactId>spring-orm</artifactId>
    131             <version>${spring.version}</version>
    132             <type>jar</type>
    133             <scope>compile</scope>
    134         </dependency>
    135         <dependency>
    136             <groupId>org.springframework</groupId>
    137             <artifactId>spring-web</artifactId>
    138             <version>${spring.version}</version>
    139             <type>jar</type>
    140             <scope>compile</scope>
    141         </dependency>
    142 
    143         <dependency>
    144             <groupId>org.springframework</groupId>
    145             <artifactId>spring-tx</artifactId>
    146             <version>${spring.version}</version>
    147             <type>jar</type>
    148             <scope>compile</scope>
    149         </dependency>
    150         <dependency>
    151             <groupId>org.springframework</groupId>
    152             <artifactId>spring-jdbc</artifactId>
    153             <version>${spring.version}</version>
    154             <type>jar</type>
    155             <scope>compile</scope>
    156         </dependency>
    157         <dependency>
    158             <groupId>org.springframework</groupId>
    159             <artifactId>spring-context</artifactId>
    160             <version>${spring.version}</version>
    161             <type>jar</type>
    162             <scope>compile</scope>
    163         </dependency>
    164         <dependency>
    165             <groupId>org.springframework</groupId>
    166             <artifactId>spring-aop</artifactId>
    167             <version>${spring.version}</version>
    168             <type>jar</type>
    169             <scope>compile</scope>
    170         </dependency>
    171         <dependency>
    172             <groupId>org.springframework</groupId>
    173             <artifactId>spring-core</artifactId>
    174             <version>${spring.version}</version>
    175             <type>jar</type>
    176             <scope>compile</scope>
    177         </dependency>
    178         <dependency>
    179             <groupId>org.springframework</groupId>
    180             <artifactId>spring-beans</artifactId>
    181             <version>${spring.version}</version>
    182             <type>jar</type>
    183             <scope>compile</scope>
    184         </dependency>
    185         <dependency>
    186             <groupId>org.springframework</groupId>
    187             <artifactId>spring-context-support</artifactId>
    188             <version>${spring.version}</version>
    189             <type>jar</type>
    190             <scope>compile</scope>
    191         </dependency>
    192         <dependency>
    193             <groupId>org.springframework</groupId>
    194             <artifactId>spring-webmvc</artifactId>
    195             <version>${spring.version}</version>
    196             <type>jar</type>
    197             <scope>compile</scope>
    198         </dependency>
    199         
    200         <!-- struts2与spring集成 -->
    201         <dependency>
    202             <groupId>org.apache.struts</groupId>
    203             <artifactId>struts2-spring-plugin</artifactId>
    204             <version>${struts2-spring-plugin.version}</version>
    205             <type>jar</type>
    206             <scope>compile</scope>
    207             <exclusions>
    208                 <exclusion><!-- 排除spring-core,以避免版本冲突 -->
    209                     <groupId>org.springframework</groupId>
    210                     <artifactId>sping-core</artifactId>
    211                 </exclusion>
    212             </exclusions>
    213         </dependency>
    214         
    215         <!-- Sppring AOP -->
    216         <dependency>
    217             <groupId>org.aspectj</groupId>
    218             <artifactId>aspectjweaver</artifactId>
    219             <version>${aspectjweaver.version}</version>
    220             <type>jar</type>
    221             <scope>compile</scope>
    222         </dependency>
    223         <dependency>
    224             <groupId>org.aspectj</groupId>
    225             <artifactId>aspectjrt</artifactId>
    226             <version>${aspectjrt.version}</version>
    227             <type>jar</type>
    228             <scope>compile</scope>
    229         </dependency>
    230         <dependency>
    231             <groupId>cglib</groupId>
    232             <artifactId>cglib-nodep</artifactId>
    233             <version>${cglib-nodep.version}</version>
    234             <type>jar</type>
    235             <scope>compile</scope>
    236         </dependency>
    237         
    238         <!-- spring jdbc -->
    239         <dependency>
    240             <groupId>commons-dbcp</groupId>
    241             <artifactId>commons-dbcp</artifactId>
    242             <version>${commons-dbcp.version}</version>
    243             <type>jar</type>
    244             <scope>compile</scope>
    245         </dependency>
    246         <dependency>
    247             <groupId>commons-pool</groupId>
    248             <artifactId>commons-pool</artifactId>
    249             <version>${commons-pool.version}</version>
    250             <type>jar</type>
    251             <scope>compile</scope>
    252         </dependency>
    253         
    254                 <!-- Spring测试框架 -->
    255         <dependency>
    256             <groupId>org.springframework</groupId>
    257             <artifactId>spring-test</artifactId>
    258             <version>${spring-test.version}</version>
    259             <scope>test</scope>
    260         </dependency>
    261         
    262           <!-- mysql驱动 -->
    263        <dependency>
    264               <groupId>mysql</groupId>
    265               <artifactId>mysql-connector-java</artifactId>
    266               <version>${mysql-connector-java.version}</version>
    267        </dependency>
    268         <!-- ibatis -->
    269         <dependency>  
    270             <groupId>org.apache.ibatis</groupId>  
    271             <artifactId>ibatis-sqlmap</artifactId>  
    272             <version>${ibatis-sqlmap.version}</version>  
    273         </dependency> 
    274     
    275         <!-- log4j日志 -->
    276         <dependency>
    277             <groupId>log4j</groupId>
    278             <artifactId>log4j</artifactId>
    279             <version>${log4j.version}</version>
    280         </dependency>
    281     
    282         <!-- 
    283             以下部分是为了兼容Tomcat7做准备,如果已经使用了Tomcat7的话可以不引入
    284             其中版本号为7.0.32,是为了兼容最新的Tomcat7版本号,其代码与7.0.30完全相同(通过MD5逐一校验每个Java文件之后确认),之前已经部署了的Pool可以不用修改。
    285         -->
    286         <dependency>
    287             <groupId>org.apache.tomcat</groupId>
    288             <artifactId>tomcat-jdbc</artifactId>
    289             <version>${tomcat-jdbc.version}</version>
    290         </dependency>
    291         
    292         <!-- JUnit start -->
    293         <dependency>
    294             <groupId>junit</groupId>
    295             <artifactId>junit</artifactId>
    296             <version>${junit.version}</version>
    297             <scope>test</scope>
    298         </dependency>
    299 
    300         <dependency>
    301             <groupId>aopalliance</groupId>
    302             <artifactId>aopalliance</artifactId>
    303             <version>${aopalliance.version}</version>
    304             <type>jar</type>
    305             <scope>compile</scope>
    306         </dependency>
    307         <dependency>
    308             <groupId>javax.servlet</groupId>
    309             <artifactId>servlet-api</artifactId>
    310             <version>${servlet-api.version}</version>
    311             <type>jar</type>
    312             <scope>compile</scope>
    313         </dependency>
    314 
    315         <dependency>
    316             <groupId>commons-beanutils</groupId>
    317             <artifactId>commons-beanutils</artifactId>
    318             <version>${commons-beanutils.version}</version>
    319             <type>jar</type>
    320             <scope>compile</scope>
    321         </dependency>
    322 
    323         <dependency>
    324             <groupId>commons-collections</groupId>
    325             <artifactId>commons-collections</artifactId>
    326             <version>${commons-collections.version}</version>
    327         </dependency>
    328         <!-- struts2对json支持 -->
    329         <dependency>
    330             <groupId>org.apache.struts</groupId>
    331             <artifactId>struts2-json-plugin</artifactId>
    332             <version>${struts2-json-plugin.version}</version>
    333             <type>jar</type>
    334         </dependency>

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

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

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

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

     1 <!-- 复制jar包到WEB-INF/lib以便开发调试 -->
     2         <plugin>
     3             <groupId>org.apache.maven.plugins</groupId>
     4             <artifactId>maven-dependency-plugin</artifactId>
     5             <version>${maven-dependency-plugin.version}</version>
     6             <executions>
     7                 <execution>
     8                     <id>copy</id>
     9                     <phase>package</phase>
    10                     <goals>
    11                         <goal>copy-dependencies</goal>
    12                     </goals>
    13                     <configuration>
    14                         <outputDirectory>src/main/webapp/WEB-INF/lib</outputDirectory>
    15                     </configuration>
    16                 </execution>
    17             </executions>
    18         </plugin>

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

     1 <!-- 生成war包,并写SVN当前版本号1 -->
     2         <plugin>
     3             <groupId>org.apache.maven.plugins</groupId>
     4             <artifactId>maven-war-plugin</artifactId>
     5             <version>${maven-war-plugin.version}</version>
     6             <configuration>
     7                 <warName>${project.artifactId}-${project.version}-${SVN.committedRevision}</warName>
     8                 <packagingExcludes>statics/**,statics-111/**</packagingExcludes>
     9             </configuration>
    10         </plugin>
    11         
    12         <!-- 生成MD5校验文件1 -->
    13             <plugin>
    14                 <artifactId>maven-antrun-plugin</artifactId>
    15                 <version>${maven-antrun-plugin.version}</version>
    16                 <executions>
    17                     <execution>
    18                         <phase> package </phase>
    19                         <configuration>
    20                             <target>
    21                                 <checksum>
    22                                     <fileset dir="target">
    23                                         <include name="*" />
    24                                     </fileset>
    25                                 </checksum>
    26                             </target>
    27 
    28                         </configuration>
    29                         <goals>
    30                             <goal>run</goal>
    31                         </goals>
    32                     </execution>
    33                 </executions>
    34             </plugin>

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

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

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

  • 相关阅读:
    java 类加载机制总结
    栈和队列的java简单实现
    java内存模型个人理解总结
    Day12-微信小程序实战-交友小程序-搭建服务器与上传文件到后端并控制云开发数据库-项目总结与github代码发布流程(附上项目全部完整代码学习使用)
    Day12-微信小程序实战-交友小程序-优化“附近的人”页面与serach组件的布局和样式以及搜索历史记录和本地缓存*内附代码)
    CSS-好玩的样式(用高斯模糊制作平缓突起)
    Day18-PHP-入门2
    Day18-PHP-入门1
    Day17-JS-jQuery
    Day17-JS进阶-线程机制和事件机制
  • 原文地址:https://www.cnblogs.com/shunyang/p/3439078.html
Copyright © 2020-2023  润新知