zoukankan      html  css  js  c++  java
  • Maven干货2

    回顾:

    1、 maven核心

    a) 依赖管理:对jar统一管理。根据坐标(groupId,artifactId,version)去找jar包,本地,私服,中央仓库

    b) 项目构建:通过命令构建。cleancompiletestpackageinstalldeploy

    2、 pom.xml

    a) 当前项目坐标信息

    b) Jdk插件,tomcat插件

    c) 依赖信息

     

     

    传递依赖冲突解决(了解)

    传递依赖:A(项目)依赖BB依赖CB称为A的直接依赖,C称为A传递依赖。

    A依赖BB依赖C1.1

    A依赖DD依赖C1.5

     

    1.1 Maven提供

    1.1.1 第一声明者优先原则

    谁先定义的就优先使用谁的传递依赖。

    1.1.2 路径近者优先原则

    直接依赖级别大于传递依赖。

    1.2 排除依赖

     

    <dependency>

    <groupId>org.apache.struts</groupId>

    <artifactId>struts2-spring-plugin</artifactId>

    <version>2.3.24</version>

    <exclusions>

    <exclusion>

    <artifactId>spring-beans</artifactId>

    <groupId>org.springframework</groupId>

    </exclusion>

    </exclusions>

    </dependency>

    1.3 版本锁定(项目中会用到的方式)

    <properties>

    <spring-version>4.2.4.RELEASE</spring-version>

    </properties>

     

    <!-- 指定项目中用到依赖信息版本 -->

    <dependencyManagement>

    <dependencies>

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-beans</artifactId>

    <version>${spring-version}</version>

    </dependency>

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-core</artifactId>

    <version>${spring-version}</version>

    </dependency>

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-web</artifactId>

    <version>${spring-version}</version>

    </dependency>

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-asm</artifactId>

    <version>${spring-version}</version>

    </dependency>

    </dependencies>

    </dependencyManagement>

    使用maven整合ssh框架(重点)

    2.1 pom.xml

      1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      3     <modelVersion>4.0.0</modelVersion>
      4     <groupId>com.itheima</groupId>
      5     <artifactId>maven_ssh_61</artifactId>
      6     <version>0.0.1-SNAPSHOT</version>
      7     <packaging>war</packaging>
      8     
      9     <!-- 属性 -->
     10     <properties>
     11         <spring.version>4.2.4.RELEASE</spring.version>
     12         <hibernate.version>5.0.7.Final</hibernate.version>
     13         <struts.version>2.3.24</struts.version>
     14     </properties>
     15 
     16     <!-- 锁定版本,struts2-2.3.24、spring4.2.4、hibernate5.0.7 -->
     17     <dependencyManagement>
     18         <dependencies>
     19             <dependency>
     20                 <groupId>org.springframework</groupId>
     21                 <artifactId>spring-context</artifactId>
     22                 <version>${spring.version}</version>
     23             </dependency>
     24             <dependency>
     25                 <groupId>org.springframework</groupId>
     26                 <artifactId>spring-aspects</artifactId>
     27                 <version>${spring.version}</version>
     28             </dependency>
     29             <dependency>
     30                 <groupId>org.springframework</groupId>
     31                 <artifactId>spring-orm</artifactId>
     32                 <version>${spring.version}</version>
     33             </dependency>
     34             <dependency>
     35                 <groupId>org.springframework</groupId>
     36                 <artifactId>spring-test</artifactId>
     37                 <version>${spring.version}</version>
     38             </dependency>
     39             <dependency>
     40                 <groupId>org.springframework</groupId>
     41                 <artifactId>spring-web</artifactId>
     42                 <version>${spring.version}</version>
     43             </dependency>
     44             <dependency>
     45                 <groupId>org.hibernate</groupId>
     46                 <artifactId>hibernate-core</artifactId>
     47                 <version>${hibernate.version}</version>
     48             </dependency>
     49             <dependency>
     50                 <groupId>org.apache.struts</groupId>
     51                 <artifactId>struts2-core</artifactId>
     52                 <version>${struts.version}</version>
     53             </dependency>
     54             <dependency>
     55                 <groupId>org.apache.struts</groupId>
     56                 <artifactId>struts2-spring-plugin</artifactId>
     57                 <version>${struts.version}</version>
     58             </dependency>
     59 
     60         </dependencies>
     61     </dependencyManagement>
     62 
     63     <!-- 依赖管理 -->
     64     <dependencies>
     65         <!-- spring -->
     66         <dependency>
     67             <groupId>org.springframework</groupId>
     68             <artifactId>spring-context</artifactId>
     69         </dependency>
     70         <dependency>
     71             <groupId>org.springframework</groupId>
     72             <artifactId>spring-aspects</artifactId>
     73         </dependency>
     74         <dependency>
     75             <groupId>org.springframework</groupId>
     76             <artifactId>spring-orm</artifactId>
     77         </dependency>
     78         <dependency>
     79             <groupId>org.springframework</groupId>
     80             <artifactId>spring-test</artifactId>
     81         </dependency>
     82         <dependency>
     83             <groupId>org.springframework</groupId>
     84             <artifactId>spring-web</artifactId>
     85         </dependency>
     86         <!-- hibernate -->
     87         <dependency>
     88             <groupId>org.hibernate</groupId>
     89             <artifactId>hibernate-core</artifactId>
     90         </dependency>
     91 
     92         <!-- 数据库驱动 -->
     93         <dependency>
     94             <groupId>mysql</groupId>
     95             <artifactId>mysql-connector-java</artifactId>
     96             <version>5.1.6</version>
     97             <scope>runtime</scope>
     98         </dependency>
     99         <!-- c3p0 -->
    100 
    101         <dependency>
    102             <groupId>c3p0</groupId>
    103             <artifactId>c3p0</artifactId>
    104             <version>0.9.1.2</version>
    105         </dependency>
    106         <!-- 导入 struts2 -->
    107         <dependency>
    108             <groupId>org.apache.struts</groupId>
    109             <artifactId>struts2-core</artifactId>
    110         </dependency>
    111         <dependency>
    112             <groupId>org.apache.struts</groupId>
    113             <artifactId>struts2-spring-plugin</artifactId>
    114         </dependency>
    115 
    116         <!-- servlet jsp -->
    117         <dependency>
    118             <groupId>javax.servlet</groupId>
    119             <artifactId>servlet-api</artifactId>
    120             <version>2.5</version>
    121             <scope>provided</scope>
    122         </dependency>
    123         <dependency>
    124             <groupId>javax.servlet</groupId>
    125             <artifactId>jsp-api</artifactId>
    126             <version>2.0</version>
    127             <scope>provided</scope>
    128         </dependency>
    129         <!-- 日志 -->
    130         <dependency>
    131             <groupId>org.slf4j</groupId>
    132             <artifactId>slf4j-log4j12</artifactId>
    133             <version>1.7.2</version>
    134         </dependency>
    135         <!-- junit -->
    136         <dependency>
    137             <groupId>junit</groupId>
    138             <artifactId>junit</artifactId>
    139             <version>4.9</version>
    140             <scope>test</scope>
    141         </dependency>
    142         <!-- jstl -->
    143         <dependency>
    144             <groupId>javax.servlet</groupId>
    145             <artifactId>jstl</artifactId>
    146             <version>1.2</version>
    147         </dependency>
    148         <dependency>
    149             <groupId>com.alibaba</groupId>
    150             <artifactId>fastjson</artifactId>
    151             <version>1.1.15</version>
    152         </dependency>
    153         <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
    154         <dependency>
    155             <groupId>org.apache.commons</groupId>
    156             <artifactId>commons-lang3</artifactId>
    157             <version>3.4</version>
    158         </dependency>
    159     </dependencies>
    160     
    161     <build>
    162         <plugins>
    163             <!-- 设置编译版本为1.7 -->
    164             <plugin>
    165                 <groupId>org.apache.maven.plugins</groupId>
    166                 <artifactId>maven-compiler-plugin</artifactId>
    167                 <configuration>
    168                     <source>1.7</source>
    169                     <target>1.7</target>
    170                     <encoding>UTF-8</encoding>
    171                 </configuration>
    172             </plugin>
    173         </plugins>
    174     </build>
    175 </project>

    2.2 配置文件加载过程

     

    2.3 分别搭建框架

    1、 搭建hibernate环境

    a) classpath下创建核心配置文件:hibernate.cfg.xml

    2、 搭建spring环境

    a) classpath下创建配置文件:applicationContext.xml

    b) Web.xml中配置监听器

    3、 搭建struts2环境

    a) classpath下创建配置文件:struts.xml

    b) web.xml配置核心过滤器

    2.4 整合框架

    2.4.1 Spring-hibernate整合

    关键点:1、数据源配置  2SessionFactory对象创建  3、事务管理

     

    spring配置文件中配置:

    db.properties

     1 jdbc.driverClass = com.mysql.jdbc.Driver
     2 jdbc.jdbcUrl=jdbc:mysql://localhost:3306/maven
     3 jdbc.user=root
     4 jdbc.password=root
     
    applicationContext.xml中: 8 <context:property-placeholder location="classpath:db.properties"/> 9 <!-- 数据源 --> 10 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> 11 <property name="driverClass" value="${jdbc.driverClass}"></property> 12 <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property> 13 <property name="user" value="${jdbc.user}"></property> 14 <property name="password" value="${jdbc.password}"></property> 15 </bean> 16 17 <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> 18 <property name="dataSource" ref="dataSource"></property> 19 <property name="configLocations" value="classpath:hibernate.cfg.xml"></property> 20 <!-- 也可以通过注入hibernate配置信息 --> 21 </bean> 22 23 <!-- 配置事务管理器 --> 24 <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"> 25 <property name="sessionFactory" ref="sessionFactory"></property> 26 </bean> 27 28 <!-- 注解方式管理事务 --> 29 <tx:annotation-driven transaction-manager="transactionManager"/>

    2.4.2 Struts2-spring整合

    关键点:action对象交给spring创建

     

     

    1、 创建action

    2、 action对象配置到spring文件中

    3、 struts.xmlaction节点  class属性=action对象beanid

     

    2.5 需求:查询客户信息

    地址栏中:http://localhost:8080/project/customerAction_findOne.action?custId=1

     

    1、 创建dao,service,接口跟实现类

    2、 IOC dao,service对象在spring配置文件

    3、 添加属性,生成set方法。在spring配置文件中注入对象

    4、 action创建findOne方法;

    5、 创建客户实体、映射文件。将映射文件引入hibernate核心配置文件中

    6、 配置结果视图。

    使用maven对项目拆分、聚合(重点)

    对现有的项目进行拆分,将dao层代码(源代码,配置文件),都提取工程中:ssh-daoservivce,web层使用同样的方式进行拆分。

    ssh-parent:

      ssh-dao:jar

      ssh-service:

      ssh-web:

     

    对拆分项目进行聚合,为了达到聚合目的,提出概念:父工程

     

    3.1 创建父工程 ssh-parent

     

     

    创建好的父工程:推断父工程不进行编码;将项目中用到的依赖定义;jdk版本在父工程中。

    将依赖信息,jdk 插件定义在父工程pom.xml

     

    3.2 将父工程打包到本地仓库

    如果忘记,将来打service项目到本地仓库,会报错。到时将父工程直接打包到本地仓库:父工程下所有的子模块都会打包到本地仓库。

     

    3.3 创建子模块:ssh-dao

    此工程中:存放数据访问层代码

     

     

     

    创建好的子模块ssh-dao:

     

     

     

     

    dao层相关代码移到ssh-dao工程。

     

     

     

    测试类:

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:spring/applicationContext-*.xml")
    public class CustomerDaoTest {
    
        @Autowired
        private CustomerDao customerDao;
        @Before
        public void setUp() throws Exception {
        }
    
        @Test
        public void testFindOne() {
            customerDao.findOne(1l);
        }
    }
    View Code

    3.4 创建子模块:ssh-service

     

     

    3.4.1 传递依赖范围(了解)

    传递依赖不是不限传递,通过设置依赖scope作用范围控制。

     

     

    Assh-serivce

    Bssh-dao

    Cjunit

     

    结论:当发现某个依赖没有传递过来,在本工程中添加依赖。

     

    3.5 创建子模块:ssh-web

     

    Web.xml

     

    3.6 运行项目

    Maven提供:

    1、 直接运行web项目

    2、 运行父工程:将各个子模块聚合到一起,再运行web项目

     

    Tomcat运行

    私服(应用)

     

    4.1 下载安装

    1、资料,解压

     

    3、 使用管理员身份运行命令行:

     

    4、 安装服务,启动服务

     

     

    5、 私服访问路径:http://localhost:8081/nexus/#welcome

    6、 登陆私服  admin/admin123

    4.2 私服上仓库分类

     

    Hosted:宿主仓库,一般存放本公司开发jar

    本公司测试版本,正式版本jar包。第三方jar包(一般存在版权问题,比如oracle驱动包)

    Proxy:代理仓库

    代理中央仓库,Apache下测试版本jar

     

    Group:组仓库

    包含宿主仓库,代理仓库,将来连接组仓库即可。

     

    Virtual:虚拟仓库  maven1仓库,废弃

     

    4.3 jar包发布到私服(应用)

    1、 MAVEN_Home/conf/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中,配置上传url地址

    <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>

     

    3、 执行命令:deploy

     

     

    4.4 jar包从私服上下载到本地仓库(应用)

    1、 MAVEN_Home/conf/settings.xml中配置模板(知道从哪下载jar包)

    <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>
    

    3、 测试

  • 相关阅读:
    选择高性能NoSQL数据库的5个步骤
    如何将 Redis 用于微服务通信的事件存储
    让你的AI模型尽可能的靠近数据源
    Collections.sort 给集合排序
    Bootstrap 文件上传插件File Input的使用
    select2 api参数的文档
    textarea 标签换行及靠左
    JSON
    JDK的get请求方式
    通讯录作业
  • 原文地址:https://www.cnblogs.com/javaxiaoxin/p/7302454.html
Copyright © 2011-2022 走看看