• Maven学习笔记二


    依赖范围

     <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>servlet-api</artifactId>
          <version>2.5</version>
          <scope>provided</scope>
        </dependency>

    Compile:默认值。表示编译(compile)时需要,测试时需要,运行时需要,打包时需要。比如:struts2-core

    Provided:编译(compile)时需要,测试(test)时也需要 ,运行时不需要,打包时不需要。比如 jsp-api.jar servlet-api.jar

    Runtime:编译时不需要,测试时需要,,运行时需要,打包时需要。比如:数据库驱动包

    Test:编译时不需要,测试时需要,运行时不需要,打包也不需要。比如:junit.jar

    依赖传递

    只添加了一个struts2-core依赖,发现项目中出现了很多jar,这种情况叫依赖传递。

      <dependency>
          <groupId>org.apache.struts</groupId>
          <artifactId>struts2-core</artifactId>
          <version>2.3.24</version>
        </dependency>

    在整合ssh框架的时候,添加struts2-spring-plugin包和spring-context包依赖时,spring-bean会出现版本冲突。

        <dependency>
          <groupId>org.apache.struts</groupId>
          <artifactId>struts2-spring-plugin</artifactId>
          <version>2.3.24</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>4.2.4.RELEASE</version>
        </dependency>

    依赖版本冲突的解决

    1、第一声明优先原则,谁先定义的就优先使用谁的传递依赖。

      <!--   spring-beans-4.2.4 -->
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-context</artifactId>
              <version>4.2.4.RELEASE</version>
          </dependency>
      
      
    <!--   spring-beans-3.0.5 -->
          <dependency>
              <groupId>org.apache.struts</groupId>
              <artifactId>struts2-spring-plugin</artifactId>
              <version>2.3.24</version>
          </dependency>

    以上代码都包含对spring-beans的依赖,但是版本不同,我们要使用4.2.4的。

    2、路径近者优先原则,直接依赖级别大于传递依赖。也就是自己添加jar包。

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>4.2.4.RELEASE</version>
    </dependency>

    还是上面的代码都包含对spring-bean的依赖,我们也可以自己添加jar包,则会使用我们自己添加的。

    3、排除原则,排除掉不想用的依赖。

        <dependency>
              <groupId>org.apache.struts</groupId>
              <artifactId>struts2-spring-plugin</artifactId>
              <version>2.3.24</version>
              <exclusions>
                <exclusion>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-beans</artifactId>
                </exclusion>
              </exclusions>
          </dependency>

    4、版本锁定原则,指定项目中用到依赖信息版本。

    <!--抽取公用的版本-->
    <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>
    </dependencies>
    </dependencyManagement>

    SSH框架整合,太耗时,百度ssh pom即可。

    完善pom.xml文件,把ssh相关的依赖都添加上去,大体如下:

    <!-- 属性 -->
        <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.8 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</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>

    学习资源:http://www.cnblogs.com/xdp-gacl/tag/Maven%E5%AD%A6%E4%B9%A0%E6%80%BB%E7%BB%93/

  • 相关阅读:
    垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
    自考感悟,话谈备忘录模式
    [每日一题] OCP1z0-047 :2013-07-26 alter table set unused之后各种情况处理
    Java实现 蓝桥杯 算法提高 p1001
    Java实现 蓝桥杯 算法提高 拿糖果
    Java实现 蓝桥杯 算法提高 拿糖果
    Java实现 蓝桥杯 算法提高 求arccos值
    Java实现 蓝桥杯 算法提高 求arccos值
    Java实现 蓝桥杯 算法提高 因式分解
    Java实现 蓝桥杯 算法提高 因式分解
  • 原文地址:https://www.cnblogs.com/ginb/p/7340295.html
Copyright © 2020-2023  润新知