二、Maven分模块开发及私服介绍

Maven分模块开发&私服

一、Maven的项目开发(整合SSH框架练习)

1. 新建Maven Project项目
2. 在pom.xml中添加依赖,导入三大框架所有所需的jar包
    这里,按Spring >>> Hibernate >>> Struts2 的顺序来添加依赖较好
    
3. 从Hibernate --- Action 完成开发
    1. Hibernate的ORM 数据库表,持久化类,映射文件。 以cst_customer,Customer,Customer.hbm.xml为例
    2. Spring 配置文件 , 完全整合 Hibernate
    3. 动作类Action类,编写struts.xml,完全整合到applicationContext.xml中
    4. web.xml 完成 Spring核心监听器,延迟加载机制及Struts2的前端控制器的配置

1.1 Maven - pom.xml 导入三大框架所需jar包

有两种方式,一个是手动一个一个的添加依赖,一个是直接复制pom.xml中的配置:

  1. 手动添加

    从Spring - Hibernate - Struts2 - 其它 的顺序添加依赖。

    Spring:
    spring-context : (导入的依赖jar包有:)
        context,core,bean,expression .  spring-aop,aopaliance,logging   4+3个包。

    spring-aspects : 
        aspectjweaver,spring-aspectj     2个包。

    spring-orm : 
        orm,jdbc,tx 3个包。

    spring-test : 
        test  1个包

    spring-web : 
        web 1个包

    共14个包。
    
    -------------------------------------------------------------------------------     

    Hibernate:
    hibernate-core:(新添加的jar包:)
        antlr,dom4j,geronimo-jta,hibernate-commons-annotations,hibernate-core,hibernate-jpa,
        jandex,javassist,jboss,xml-api      10个包


![img22.png](http://upload-images.jianshu.io/upload_images/5303154-c098a56b87173cd8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)


    mysql :
        mysql-connector     1个包

    c3p0 : 
        c3p0    1个包

    共12个包。  

    -------------------------------------------------------------------------------

    Struts2 :36
    strut2-core :
        struts-core,xwork-core,commons-lang,ognl,asm,commons-fileupload,commons-io,freemark,javasist 3.11等

    struts2-spring-plugin :
        
    -------------------------------------------------------------------------------

    其他:

    servlet-api:

    jsp-api:
    
    junit:

    slf4j-log4j12:

    jstl

    -------------------------------------------------------------------------------

    
        
            
            
                org.apache.maven.plugins
                maven-compiler-plugin
                
                    1.7
                    1.7
                    UTF-8
                
            

            
            
                org.apache.tomcat.maven
                tomcat7-maven-plugin
                2.2
                
                    
                    /ssh
                    
                    8080
                    UTF-8
                
            
        
    

2. 直接上网拷贝pom.xml中的内容【使用这一种】

开发效率高,不容易出错。使用版本锁定等方式,有效解决版本冲突的问题:



    4.2.4.RELEASE
    5.0.7.Final
    2.3.24




    
        
            org.springframework
            spring-context
            ${spring.version}
        
        
            org.springframework
            spring-aspects
            ${spring.version}
        
        
            org.springframework
            spring-orm
            ${spring.version}
        
        
            org.springframework
            spring-test
            ${spring.version}
        
        
            org.springframework
            spring-web
            ${spring.version}
        
        
            org.hibernate
            hibernate-core
            ${hibernate.version}
        
        
            org.apache.struts
            struts2-core
            ${struts.version}
        
        
            org.apache.struts
            struts2-spring-plugin
            ${struts.version}
        
    



    
    
        org.springframework
        spring-context
    
    
        org.springframework
        spring-aspects
    
    
        org.springframework
        spring-orm
    
    
        org.springframework
        spring-test
    
    
        org.springframework
        spring-web
    
    
    
        org.hibernate
        hibernate-core
    

    
    
        mysql
        mysql-connector-java
        5.1.6
        runtime
    
    

    
        c3p0
        c3p0
        0.9.1.2
    


    
    
        org.apache.struts
        struts2-core
    
    
        org.apache.struts
        struts2-spring-plugin
    

    
    
        javax.servlet
        servlet-api
        2.5
        provided
    
    
        javax.servlet
        jsp-api
        2.0
        provided
    
    
    
        org.slf4j
        slf4j-log4j12
        1.7.2
    
    
    
        junit
        junit
        4.9
        test
    
    
    
        javax.servlet
        jstl
        1.2
    



    
        
        
            org.apache.maven.plugins
            maven-compiler-plugin
            
                1.7
                1.7
                UTF-8
            
        

        
        
            org.codehaus.mojo
            tomcat-maven-plugin
            1.1
            
                
                /ssh
                
                8080
            
        
    

1.2 三大框架配置文件的整合

与之前的整合一致,区别是:

1. Customer.hbm.xml的hibernate的映射文件需要放到src/main/resources目录下,与src/main/java目录下实体类Customer的路径必须一致。
    其它配置文件如applicationContext.xml,struts.xml,db.properties放在src/main/resouces根目录下

2. Spring的核心配置文件整合hibernate
    与之前的区别是:
        sessionFactory的bean中,加载映射文件使用 mappingLocations。
        这样可以使用classpath:classpath:com/itdream/entity/*.hbm.xml

=============================================================================

applicationContext.xml :




        
        
        
        
        
            
            
            
            
         
        
        
            
            
            
            
            
                
                    org.hibernate.dialect.MySQL5Dialect
                    true
                    true
                    none
                
            
            
            
            
                
                    classpath:com/itdream/entity/*.hbm.xml
                
            
        
        
        
        
        
        
            
        
        
        
        
            
                
                
                
                
            
        
        
        
        
            
            
            
        
            
        
        
        
            
        
        
            
        
        
            
        


struts.xml:



    
    
    
    

    
    
        
            /list.jsp
        
    


web.xml:


    org.springframework.web.context.ContextLoaderListener


    contextConfigLocation
    classpath:applicationContext.xml




    OpenSessionInView
    org.springframework.orm.hibernate5.support.OpenSessionInViewFilter


    OpenSessionInView
    /*




    Struts
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter


    Struts
    /*


db.properties:
jdbc.dataSource=com.mchange.v2.c3p0.ComboPooledDataSource
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/maven
jdbc.username=root
jdbc.password=root

log4j.properties:
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=d:\\mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###
log4j.rootLogger=info, stdout,file

具体实现省略。

二、 Maven实现模块开发

2.1 父工程maven-parent

二、Maven分模块开发及私服介绍_第1张图片
img23.png
新建Maven工程(Project),打包方式选择pom.

在父工程中添加依赖:



    4.2.4.RELEASE
    5.0.7.Final
    2.3.24




    
        
            org.springframework
            spring-context
            ${spring.version}
        
        
            org.springframework
            spring-aspects
            ${spring.version}
        
        
            org.springframework
            spring-orm
            ${spring.version}
        
        
            org.springframework
            spring-test
            ${spring.version}
        
        
            org.springframework
            spring-web
            ${spring.version}
        
        
            org.hibernate
            hibernate-core
            ${hibernate.version}
        
        
            org.apache.struts
            struts2-core
            ${struts.version}
        
        
            org.apache.struts
            struts2-spring-plugin
            ${struts.version}
        
    



    
    
        org.springframework
        spring-context
    
    
        org.springframework
        spring-aspects
    
    
        org.springframework
        spring-orm
    
    
        org.springframework
        spring-test
    
    
        org.springframework
        spring-web
    
    
    
        org.hibernate
        hibernate-core
    

    
    
        mysql
        mysql-connector-java
        5.1.6
        runtime
    
    

    
        c3p0
        c3p0
        0.9.1.2
    


    
    
        org.apache.struts
        struts2-core
    
    
        org.apache.struts
        struts2-spring-plugin
    

    
    
        javax.servlet
        servlet-api
        2.5
        provided
    
    
        javax.servlet
        jsp-api
        2.0
        provided
    
    
    
        org.slf4j
        slf4j-log4j12
        1.7.2
    
    
    
        junit
        junit
        4.9
        test
    
    
    
        javax.servlet
        jstl
        1.2
    



    
        
        
            org.apache.maven.plugins
            maven-compiler-plugin
            
                1.7
                1.7
                UTF-8
            
        

        
        
            org.apache.tomcat.maven
            tomcat7-maven-plugin
            2.2
            
                8080
                /maven
                UTF-8
            
        
    

发布到本地仓库(install)

2.2 创建子模块maven-dao

在父工程上new一个Maven模块(module),打包方式选择jar.以供service依赖。

以Customer查询所有客户findAll为例:实现类具体代码省略,主要展示配置文件的思路。


1. 如果需要测试,在pom.xml中添加依赖 Junit.jar

2. 实体类与映射文件的编写:略, 与以往不同的是注意它们放置在Maven工程中的位置,且它们所在的包结果要一致。

3. applicationContext-dao.xml(整合hibernate) :
二、Maven分模块开发及私服介绍_第2张图片
img24.png




    
    

    
    
        
        
        
        
    
    
    
    
        
        
        
        
        
            
                org.hibernate.dialect.MySQL5Dialect
                true
                true
                none
            
        
        
        
        
            
                classpath:com/itdream/maven/dao/Customer.hbm.xml
            
        
    
    
    
    
        
    


这里与以前的配置不同的是,加载hibernate映射文件改为了mappingLocations,以前是mappingResources,改为Locations后可以使用通配符。

db.properties:
jdbc.dataSource=com.mchange.v2.c3p0.ComboPooledDataSource
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/maven
jdbc.username=root
jdbc.password=root

-----------------------------------------------------------------------------
完成dao层的代码实现。

4. 发布到本地仓库,以供后面service层使用(企业中发布到私服供service团队使用)

2.3 子模块maven-service

1. 新建子模块maven-service,继承父工程,打包方式选择jar,以供web层依赖使用。
2. pom.xml中添加maven-dao依赖.如果需要测试,添加依赖Junit
3. 编写applicationContext-service.xml,完成Spring的事务管理及service的bean注册。


 


    
    
    
        
    

    
    
        
            
            
            
            
        
    
    
    
    
        
        
    

    
    
        
    


完成service层的代码实现。

4. 发布到本地仓库。

2.4 子模块maven-action

1. 新建子模块maven-action,这里打包方式选择 war .
2. 添加依赖maven-service,如果需要测试,添加Junit依赖。
3. 编写配置文件applicationContext-action.xml及struts.xml

struts.xml:




    
    
    

    
    
        
            /list.jsp
        
    



applicationContext-action.xml:


 


    
    
        
    


完成页面及Action代码实现。

4. 修改web.xml。
    1. 在运行web程序时,Spring监听器扫描web依赖的jar包中所有的applicationContext-*.xml.
    2. Spring延迟加载机制
    3. Struts的前端控制器



    org.springframework.web.context.ContextLoaderListener


    contextConfigLocation
    classpath*:applicationContext-*.xml




    OpenSessionInView
    org.springframework.orm.hibernate5.support.OpenSessionInViewFilter


    OpenSessionInView
    /*




    Struts
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter


    Struts
    /*


分模块开发完成。

三、 私服的安装,上传jar(子模块)及下载jar

3.1 nexus的安装

http://www.sonatype.org/nexus/archived/

下载后解压即可。

进入到解压后的nexus的bin目录:
    D:\Develop\maven\nexus\nexus-2.12.0-01\bin
    dos窗口执行nexus install完成安装。 如要卸载,nexus.bat uninstall.

开启nexus服务:
    nexus.bat start

3.2 上传子模块到私服

1. 首先必须有安装Maven,在Maven的配置文件setting中添加访问私服的账号密码。
    添加到settings.xml中   
    
      releases
      admin
      admin123
    
    
      snapshots
      admin
      admin123
    

2. 在要上传的模块的pom.xml中配置上传的私服的路径地址。
    添加到pom.xml中
    
        
            releases
        http://localhost:8081/nexus/content/repositories/releases/
         
        
            snapshots
        http://localhost:8081/nexus/content/repositories/snapshots/
         
    
修改的就是上传到私服的路径为公司的ip地址.

3. 上传到私服。
    右键Run as 选择Maven build...,输入deploy上传。

3.3 下载子模块或jar包到本地仓库

需要连接私服。在配置了账号密码的基础上,配置要从哪个私服仓库下载。

到了不同公司要修改的是仓库地址的ip为公司私服的ip地址。

添加到settings.xml中
   
    
    dev   
       
        
        
        nexus   
        
        http://localhost:8081/nexus/content/groups/public/   
        
           
          true   
           
        
           
          true   
           
         
      
       
        
          
            
            public  
            Public Repositories  
            http://localhost:8081/nexus/content/groups/public/  
          
      
  


2. 激活定义的仓库。
  
    dev
  

你可能感兴趣的:(二、Maven分模块开发及私服介绍)