zoukankan      html  css  js  c++  java
  • & maven总结

    maven

    常用命令

    常见属性标签

    Scope

    scope定义了类包在项目的使用阶段。项目阶段包括:编译,运行,测试和发布
    scope属性说明

    • compile
      • 默认scope为compile,表示当前依赖参与项目的编译、测试和运行阶段,属于强依赖。打包时, 会打到包里面
    • test
      • 该依赖仅仅参与测试相关的内容,包括测试用例的编译和运行,比如定性的Junit
    • runtime
      • 依赖仅参与运行周期中的使用。一般这种类库都是接口与实现相分离的类库,比如JDBC类库,在编译之时仅依赖相关的接口,在具体的运行之时,才需要具体的mysql、oracle等等数据的驱动程序。此类的驱动都是为runtime的类库。
    • provided
      • 该依赖在打包过程中,不需要打进去,这个由运行的环境来提供,比如tomcat或者基础类库等等,事实上,该依赖可以参与编译、测试和运行等周期,与compile等同。区别在于打包阶段进行了exclude操作。
    • system
      • 使用上与provided相同,不同之处在于该依赖不从maven仓库中提取,而是从本地文件系统中提取,其会参照systemPath的属性进行提取依赖。
    • import
      • 这个是maven2.0.9版本后出的属性,import只能在dependencyManagement的中使用,能解决maven单继承问题,import依赖关系实际上并不参与限制依赖关系的传递性。

    SystemPath

    当maven依赖本地而非repository中的jar包,sytemPath指明本地jar包路径,例如:

    <dependency>
                <groupId>com.taobao</groupId>
                <artifactId>api</artifactId>
                <version>1.0</version>
                <scope>system</scope>
                <systemPath>${project.basedir}/../rookie-system/src/main/resources/lib/taobao-sdk-java.jar</systemPath>
            </dependency>

    打jar包时,includeSystemScope 该标签项可以将外部引用包打包:

     <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <!--该配置项的作用是:打包外部jar (scope为system)-->
                    <!--
                        <dependency>
                            <groupId>com.taobao</groupId>
                            <artifactId>api</artifactId>
                            <version>1.0</version>
                            <scope>system</scope>
                            <systemPath>${project.basedir}/../rookie-system/src/main/resources/lib/taobao-sdk-java.jar</systemPath>
                        </dependency>
                    -->
                    <configuration>
                        <includeSystemScope>true</includeSystemScope>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                        <skipTests>true</skipTests>
                    </configuration>
                </plugin>
            </plugins>
        </build>

    optional + Exclusions

    optional 可选依赖

    Exclusions 排除jar包

    Optional和Exclusions都是用来排除jar包依赖使用的,两者在使用上却是相反。
    Optional定义后,该依赖只能在本项目中传递,不会传递到引用该项目的父项目中,父项目需要主动引用该依赖才行。
    Exclusions则是主动排除子项目传递过来的依赖。

    用法区别
    应用场景:projectA 依赖projectB, projectB 依赖projectC时

    B pom.xml

    <project>
      ...
      <dependencies>
        <dependency>
          <groupId>sample.ProjectC</groupId>
          <artifactId>Project-C</artifactId>
          <version>1.0</version>
          <scope>compile</scope>
          <optional>true</optional>
        </dependency>
      </dependencies>
    </project>

    如上A依赖B,B依赖C用的true,这时C只能在B中使用,而不会主动传递到A中,A需要主动引用C才有B的依赖。

    如果B不用true引用C,则会传递到A中,
    **A如果不需要C则需要主动排除B传递过来的C。

    <dependencies>
        <dependency>
          <groupId>sample.ProjectB</groupId>
          <artifactId>Project-B</artifactId>
          <version>1.0</version>
          <scope>compile</scope>
          <exclusions>
            <exclusion>
              <groupId>sample.ProjectC</groupId>
              <artifactId>Project-C</artifactId>
            </exclusion>
          </exclusions> 
        </dependency>
    </dependencies>
  • 相关阅读:
    10 个雷人的注释,就怕你不敢用!
    Java 14 之模式匹配,非常赞的一个新特性!
    poj 3661 Running(区间dp)
    LightOJ
    hdu 5540 Secrete Master Plan(水)
    hdu 5584 LCM Walk(数学推导公式,规律)
    hdu 5583 Kingdom of Black and White(模拟,技巧)
    hdu 5578 Friendship of Frog(multiset的应用)
    hdu 5586 Sum(dp+技巧)
    hdu 5585 Numbers
  • 原文地址:https://www.cnblogs.com/doagain/p/14969007.html
Copyright © 2011-2022 走看看