美文网首页mavenJava学习笔记maven
二、Maven分模块开发及私服介绍

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

作者: 明天你好向前奔跑 | 来源:发表于2017-07-31 13:05 被阅读94次

    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:https://img.haomeiwen.com/i5303154/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
    
        -------------------------------------------------------------------------------
    
        <build>
            <plugins>
                <!-- 设置编译版本为1.7 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.7</source>
                        <target>1.7</target>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
    
                <!-- maven内置 的tomcat7插件 -->
                <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.2</version>
                    <configuration>
                        <!-- 可以灵活配置工程路径 -->
                        <path>/ssh</path>
                        <!-- 可以灵活配置端口号 -->
                        <port>8080</port>
                        <uriEncoding>UTF-8</uriEncoding>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    

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

    开发效率高,不容易出错。使用版本锁定等方式,有效解决版本冲突的问题:
    
    <!-- 属性 -->
    <properties>
        <spring.version>4.2.4.RELEASE</spring.version>
        <hibernate.version>5.0.7.Final</hibernate.version>
        <struts.version>2.3.24</struts.version>
    </properties>
    
    <!-- 锁定版本,struts2-2.3.24、spring4.2.4、hibernate5.0.7 -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aspects</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-orm</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-core</artifactId>
                <version>${hibernate.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.struts</groupId>
                <artifactId>struts2-core</artifactId>
                <version>${struts.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.struts</groupId>
                <artifactId>struts2-spring-plugin</artifactId>
                <version>${struts.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <!-- 依赖管理 -->
    <dependencies>
        <!-- spring -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
        </dependency>
        <!-- hibernate -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
        </dependency>
    
        <!-- 数据库驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
            <scope>runtime</scope>
        </dependency>
        <!-- c3p0 -->
    
        <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.1.2</version>
        </dependency>
    
    
        <!-- 导入 struts2 -->
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-spring-plugin</artifactId>
        </dependency>
    
        <!-- servlet jsp -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.0</version>
            <scope>provided</scope>
        </dependency>
        <!-- 日志 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.2</version>
        </dependency>
        <!-- junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.9</version>
            <scope>test</scope>
        </dependency>
        <!-- jstl -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
    </dependencies>
    
    <build>
        <plugins>
            <!-- 设置编译版本为1.7 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
    
            <!-- maven内置 的tomcat6插件 -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>tomcat-maven-plugin</artifactId>
                <version>1.1</version>
                <configuration>
                    <!-- 可以灵活配置工程路径 -->
                    <path>/ssh</path>
                    <!-- 可以灵活配置端口号 -->
                    <port>8080</port>
                </configuration>
            </plugin>
        </plugins>
    </build>
    

    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 :
    
    <?xml version="1.0" encoding="UTF-8"?>
    
    <beans xmlns="http://www.springframework.org/schema/beans"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns:context="http://www.springframework.org/schema/context"
            xmlns:aop="http://www.springframework.org/schema/aop"
            xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
            
            <!-- 外部文件引入 -->
            <context:property-placeholder location="classpath:db.properties"/>
            
            <bean id="dataSource" class="${jdbc.dataSource}">
                <property name="driverClass" value="${jdbc.driverClass}"/>
                <property name="jdbcUrl" value="${jdbc.url}"/>
                <property name="user" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </bean> 
            
            <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
                <!-- 1. 注入数据源,连接池 -->
                <property name="dataSource" ref="dataSource"/>
                
                <!-- 2. hibernate的属性 -->
                <property name="hibernateProperties">
                    <props>
                        <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
                        <prop key="hibernate.show_sql">true</prop>
                        <prop key="hibernate.format_sql">true</prop>
                        <prop key="hibernate.hbm2ddl.auto">none</prop>
                    </props>
                </property>
                
                <!-- 3. 加载hibernate的映射文件 -->
                <property name="mappingLocations">
                    <list>
                        <value>classpath:com/itdream/entity/*.hbm.xml</value>
                    </list>
                </property>
            </bean>
            
            
            <!-- Spring事务管理 -->
            <!-- 事务管理器 -->
            <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
                <property name="sessionFactory" ref="sessionFactory"/>
            </bean>
            
            <!-- 事务通知 -->
            <tx:advice id="txAdvice" transaction-manager="transactionManager">
                <tx:attributes>
                    <tx:method name="save*"/>
                    <tx:method name="delete*"/>
                    <tx:method name="update*"/>
                    <tx:method name="find*" read-only="true"/>
                </tx:attributes>
            </tx:advice>
            
            <!-- 配置切面 -->
            <aop:config>
                <aop:pointcut expression="execution(* com.itdream.service.impl.*.*(..))" id="txPointcut"/>
                
                <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
            </aop:config>
                
            <!-- Spring装配bean -->
            <!-- customer模块 -->
            <bean id="customerDAO" class="com.itdream.dao.impl.CustomerDAOImpl">
                <property name="sessionFactory" ref="sessionFactory"/>
            </bean>
            <bean id="customerService" class="com.itdream.service.impl.CustomerServiceImpl">
                <property name="customerDAO" ref="customerDAO"/>
            </bean>
            <bean id="customerAction" class="com.itdream.web.action.CustomerAction">
                <property name="customerService" ref="customerService"/>
            </bean>
    </beans>
    

    struts.xml:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd" >
    <struts>
        <!-- 自动加载配置文件 -->
        <constant name="struts.configuration.xml.reload" value="true"/>
        <!-- 简单样式 -->
        <constant name="struts.ui.theme" value="simple"/>
    
        <!-- customer模块 -->
        <package name="customer" namespace="/" extends="struts-default">
            <action name="customer_*" class="customerAction" method="{1}">
                <result name="findAll_success">/list.jsp</result>
            </action>
        </package>
    </struts>
    

    web.xml:
    <!-- Spring核心监听器 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    
    <!-- Spring延迟加载机制 -->
    <filter>
        <filter-name>OpenSessionInView</filter-name>
        <filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>OpenSessionInView</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
    <!-- Struts的前端控制器 -->
    <filter>
        <filter-name>Struts</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>Struts</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    

    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

    img23.png
    新建Maven工程(Project),打包方式选择pom.
    

    在父工程中添加依赖:

    <!-- 属性 -->
    <properties>
        <spring.version>4.2.4.RELEASE</spring.version>
        <hibernate.version>5.0.7.Final</hibernate.version>
        <struts.version>2.3.24</struts.version>
    </properties>
    
    <!-- 锁定版本,struts2-2.3.24、spring4.2.4、hibernate5.0.7 -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aspects</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-orm</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-core</artifactId>
                <version>${hibernate.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.struts</groupId>
                <artifactId>struts2-core</artifactId>
                <version>${struts.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.struts</groupId>
                <artifactId>struts2-spring-plugin</artifactId>
                <version>${struts.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <!-- 依赖管理 -->
    <dependencies>
        <!-- spring -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
        </dependency>
        <!-- hibernate -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
        </dependency>
    
        <!-- 数据库驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
            <scope>runtime</scope>
        </dependency>
        <!-- c3p0 -->
    
        <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.1.2</version>
        </dependency>
    
    
        <!-- 导入 struts2 -->
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-spring-plugin</artifactId>
        </dependency>
    
        <!-- servlet jsp -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.0</version>
            <scope>provided</scope>
        </dependency>
        <!-- 日志 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.2</version>
        </dependency>
        <!-- junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.9</version>
            <scope>test</scope>
        </dependency>
        <!-- jstl -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
    </dependencies>
    
    <build>
        <plugins>
            <!-- 设置编译版本为1.7 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
    
            <!-- maven内置 的tomcat7插件 -->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <port>8080</port>
                    <path>/maven</path>
                    <uriEncoding>UTF-8</uriEncoding>
                </configuration>
            </plugin>
        </plugins>
    </build>
    

    发布到本地仓库(install)

    2.2 创建子模块maven-dao

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

    以Customer查询所有客户findAll为例:实现类具体代码省略,主要展示配置文件的思路。
    
    
    1. 如果需要测试,在pom.xml中添加依赖 Junit.jar
    
    2. 实体类与映射文件的编写:略, 与以往不同的是注意它们放置在Maven工程中的位置,且它们所在的包结果要一致。
    
    3. applicationContext-dao.xml(整合hibernate) :
    
    img24.png
    <?xml version="1.0" encoding="UTF-8"?>
    
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
        xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
    
        <!-- 引入外部配置文件 -->
        <context:property-placeholder location="classpath:db.properties"/>
    
        <!-- 连接池 -->
        <bean id="dataSource" class="${jdbc.dataSource}">
            <property name="driverClass" value="${jdbc.driverClass}"/>
            <property name="jdbcUrl" value="${jdbc.url}"/>
            <property name="user" value="${jdbc.username}"/>
            <property name="password" value="${jdbc.password}"/>
        </bean>
        
        <!-- 整合Hibernate -->
        <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
            <!-- 1. hibernate的数据源,连接池 -->
            <property name="dataSource" ref="dataSource"/>
            
            <!-- 2. hibernate的属性 -->
            <property name="hibernateProperties">
                <props>
                    <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
                    <prop key="hibernate.show_sql">true</prop>
                    <prop key="hibernate.format_sql">true</prop>
                    <prop key="hibernate.hbm2ddl.auto">none</prop>
                </props>
            </property>
            
            <!-- 3. hibernate的映射文件 -->
            <property name="mappingLocations">
                <list>
                    <value>classpath:com/itdream/maven/dao/Customer.hbm.xml</value>
                </list>
            </property>
        </bean>
        
        <!-- 向dao中注入Session -->
        <bean id="customerDao" class="com.itdream.maven.dao.impl.CustomerDaoImpl">
            <property name="sessionFactory" ref="sessionFactory"/>
        </bean>
    </beans>
    
    这里与以前的配置不同的是,加载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注册。
    <?xml version="1.0" encoding="UTF-8"?>
    
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
        xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!-- bean definitions here -->
    
    
        <!-- Spring管理事务 -->
        <!-- Spring的事务管理器 -->
        <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
            <property name="sessionFactory" ref="sessionFactory" />
        </bean>
    
        <!-- Spring事务通知 -->
        <tx:advice id="txAdvice" transaction-manager="transactionManager">
            <tx:attributes>
                <tx:method name="save*" />
                <tx:method name="delete*" />
                <tx:method name="update*" />
                <tx:method name="find*" read-only="true" />
            </tx:attributes>
        </tx:advice>
        
        <!-- 切面配置 -->
        <aop:config>
            <aop:pointcut expression="execution(* com.itdream.maven.service.impl.*ServiceImpl.*(..))" id="txPointcut"/>
            <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
        </aop:config>
    
        <!-- Spring装配bean -->
        <bean id="customerService" class="com.itdream.maven.service.impl.CustomerServiceImpl">
            <property name="customerDao" ref="customerDao" />
        </bean>
    </beans>
    
    完成service层的代码实现。
    
    4. 发布到本地仓库。
    

    2.4 子模块maven-action

    1. 新建子模块maven-action,这里打包方式选择 war .
    2. 添加依赖maven-service,如果需要测试,添加Junit依赖。
    3. 编写配置文件applicationContext-action.xml及struts.xml
    
    struts.xml:
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
    <struts>
    
        <constant name="struts.configuration.xml.reload" value="true" />
        <!-- 使用简单样式 -->
        <constant name="struts.ui.theme" value="simple" />
    
        <!-- 自定义包,配置Action -->
        <package name="customer" namespace="/" extends="struts-default">
            <action name="customer_*" class="customerAction" method="{1}">
                <result name="findAll_success">/list.jsp</result>
            </action>
        </package>
    </struts>
    
    
    applicationContext-action.xml:
    <?xml version="1.0" encoding="UTF-8"?>
    
    <beans xmlns="http://www.springframework.org/schema/beans"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns:context="http://www.springframework.org/schema/context"
            xmlns:aop="http://www.springframework.org/schema/aop"
            xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> 
    
    
        <!-- Customer模块 -->
        <bean id="customerAction" class="com.itdream.maven.web.action.CustomerAction">
            <property name="customerService" ref="customerService"/>
        </bean>
    </beans>
    
    完成页面及Action代码实现。
    
    4. 修改web.xml。
        1. 在运行web程序时,Spring监听器扫描web依赖的jar包中所有的applicationContext-*.xml.
        2. Spring延迟加载机制
        3. Struts的前端控制器
    
    <!-- Spring的核心监听器 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:applicationContext-*.xml</param-value>
    </context-param>
    
    <!-- Spring的延迟加载 -->
    <filter>
        <filter-name>OpenSessionInView</filter-name>
        <filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>OpenSessionInView</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
    <!-- Struts的前端控制器 -->
    <filter>
        <filter-name>Struts</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>Struts</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    

    分模块开发完成。

    三、 私服的安装,上传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中   
        <server>
          <id>releases</id>
          <username>admin</username>
          <password>admin123</password>
        </server>
        <server>
          <id>snapshots</id>
          <username>admin</username>
          <password>admin123</password>
        </server>
    
    2. 在要上传的模块的pom.xml中配置上传的私服的路径地址。
        添加到pom.xml中
        <distributionManagement>
            <repository>
                <id>releases</id>
            <url>http://localhost:8081/nexus/content/repositories/releases/</url>
            </repository> 
            <snapshotRepository>
                <id>snapshots</id>
            <url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
            </snapshotRepository> 
        </distributionManagement>
    修改的就是上传到私服的路径为公司的ip地址.
    
    3. 上传到私服。
        右键Run as 选择Maven build...,输入deploy上传。
    

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

    需要连接私服。在配置了账号密码的基础上,配置要从哪个私服仓库下载。
    
    到了不同公司要修改的是仓库地址的ip为公司私服的ip地址。
    
    添加到settings.xml中
    <profile>   
        <!--profile的id-->
        <id>dev</id>   
        <repositories>   
          <repository>  
            <!--仓库id,repositories可以配置多个仓库,保证id不重复-->
            <id>nexus</id>   
            <!--仓库地址,即nexus仓库组的地址-->
            <url>http://localhost:8081/nexus/content/groups/public/</url>   
            <!--是否下载releases构件-->
            <releases>   
              <enabled>true</enabled>   
            </releases>   
            <!--是否下载snapshots构件-->
            <snapshots>   
              <enabled>true</enabled>   
            </snapshots>   
          </repository>   
        </repositories>  
         <pluginRepositories>  
            <!-- 插件仓库,maven的运行依赖插件,也需要从私服下载插件 -->
            <pluginRepository>  
                <!-- 插件仓库的id不允许重复,如果重复后边配置会覆盖前边 -->
                <id>public</id>  
                <name>Public Repositories</name>  
                <url>http://localhost:8081/nexus/content/groups/public/</url>  
            </pluginRepository>  
        </pluginRepositories>  
    </profile>  
    
    
    2. 激活定义的仓库。
      <activeProfiles>
        <activeProfile>dev</activeProfile>
      </activeProfiles>

    相关文章

      网友评论

        本文标题:二、Maven分模块开发及私服介绍

        本文链接:https://www.haomeiwen.com/subject/grzllxtx.html