maven学习(六)依赖、聚合、继承

先说一下概念(个人理解的,有问题请留言):

  依赖:我要盖一座房子,就需要很多的砖,这些专就是盖房子的一个依赖。我要跑一个maven项目,需要各种各样的功能,功能实现的jar包和插件就是我的依赖。

  聚合:物以类聚嘛,你想要去xx旅游,我也想去xx旅游,咱们有相同的需求完全可以一块抱团啊。聚合就是将具有相同需求的模块聚合到一块,主要是为了模块服务的,比如我一个商品服务有单独的api的jar包,有单独的service的实现包,但是都属于商品模块的,执行编译等操作的时候就不用费劲执行两遍命令了,此时就可以聚合到一块。目的是方便构建项目~

  继承:这个好理解,老子传给儿子的就是继承。不断的提取共有部分进行管理,主要解决的是重复配置的问题,通常用于声明一些公共依赖模块、属性等。

依赖:

   依赖主要包含:依赖范围、传递性依赖、依赖优先级、依赖类型、可选依赖、排除依赖等,下面用带有注释的xml配置来描述。(注:此例非人类配置仅为说明各个属性的作用,未满18周岁同学请在父母陪同下观看)

<!-- 属性定义,类似于常量 -->
     <properties>
         <property.key>property.value</property.key>
         <!-- 归类依赖,这里例子举的不是很恰当。试想用定义了spring的某个版本,下面依赖的<version>全用变量就可以统一管理 -->
         <junit.version>3.8.1</junit.version>
     </properties>
    <!-- 依赖管理,可以依赖内部模块、也可以依赖三方jar包 -->
    <!-- 依赖命令:
            依赖树:dependency:tree
            依赖列表:dependency:list
            依赖分析:dependency:analyze
     -->
    <dependencies>
        <!-- 依赖 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <!-- 组件的附属构件,不能在定义pom的时候直接指定,此值由插件生成,比如java-doc等,依赖的时候要指明
            <classifier></classifier> -->
            <!-- 
                依赖范围:
                    compile(默认):编译、测试、运行都有效,spring-core
                    test:测试,junit
                    provided:编译、测试,servlet-api
                    runtime:测试、运行,jdbc驱动
                    system:系统
                    import:与dependencyManagement同时使用
                传递性依赖:
                        A - B - sb.jar
                        此时A传递引用sb.jar
                依赖优先级:
                    1.第一原则,路径最近依赖原则
                        A - B - sb.jar
                        A - sb.jar        (√)
                    2.第二原则,最先声明依赖原则
                        A - B - sb.jar    (√)
                        A - C - sb.jar
             -->
            <scope>test</scope>
             <!-- 类型,一般不用显示声明,默认为jar -->
            <type>jar</type>
            <!-- 可选依赖,不会被传递 -->
            <optional>true</optional>
            <!-- 排除依赖,比如排除掉某个不想要的包 
            <exclusions>
                <exclusion>
                    <groupId>com.wang</groupId>
                    <artifactId>test123</artifactId>
                </exclusion>
            </exclusions>-->
            <!-- 引入比较特殊的jar包的时候才会使用到,通常是相同版本在不同环境下使用的jar,比如jar的名字json-lib-2.4-jdk15.jar -->
            <!-- <classifier>jdk15</classifier> -->
            <!-- 仅供系统范围使用,不鼓励使用这个元素,设置为系统的绝对路径,可以使用系统变量如${Java.home},要求<scope>元素的值为system 
            <systemPath>D:\test123.jar</systemPath>-->
        </dependency>
    </dependencies>

 

聚合:

  表现为pom.xml中的<modules>元素,注意module的配置是相对于父pom的,如:

<!-- 目录结构 
  parent
    父pom.xml
  account-email
    pom.xml
  account-persist
    pom.xml -->
<!-- 配置 -->
<modules>
  <module>../account-email</module>
  <module>../account-persist</module>
</modules>
<!-- 目录结构 
  父pom.xml
  account-email
    pom.xml
  account-persist
    pom.xml -->

<!-- 配置 --> <modules> <module>account-email</module> <module>account-persist</module> </modules>

继承:

  表现为pom.xml的<parent>元素,子pom可以继承父pom中的配置,如依赖、属性等。

  父模块只能打包为pom。

  可以继承的元素:groupId、version、description、organization、inceptionYear、url、developers、contributors、distributinManagement、issueManagement、ciManagement、scm、mailingLists、properties、dependencies、dependencyManagement、repositories、build、reporting

  感觉上面大多数都是一些扯蛋的元素,比较常用的有以下几个:

  properties:属性,类似于java的静态常量

  dependencies:依赖

  distributionManagement:部署配置,比如自定义组件的上传,会结合settings.xml里的server进行账号认证。

依赖管理(不会实际引入依赖):

  <dependencyManagement>元素,子模块引入时可以省略版本号的配置

  依赖管理scope元素可以设置为import,这个import必须结合dependencyManagement来使用。使用import通常指向一个pom文件,作用是将目标pom中的dependencyManagement配置导入合并到当前pom的dependencyManagement元素中使用。

插件管理(不会实际引入依赖):

  <pluginManagement>,只需引入插件的坐标即可,省去插件的具体配置,便于管理和维护~

  

 

转载于:https://www.cnblogs.com/douJiangYouTiao888/p/6506630.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java实现Des加密(不用加载),有完整S盒子。 部分代码如下: ackage desJava; import java.util.*; public class Des { byte[] bytekey; public Des(String strKey) { this.bytekey = strKey.getBytes(); }// 声明常量字节数组 private static final int[] IP = { 58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20, 12, 4, 62, 54, 46, 38, 30, 22, 14, 6, 64, 56, 48, 40, 32, 24, 16, 8, 57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 27, 19, 11, 3, 61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7 }; // 64 private static final int[] IP_1 = { 40, 8, 48, 16, 56, 24, 64, 32, 39, 7, 47, 15, 55, 23, 63, 31, 38, 6, 46, 14, 54, 22, 62, 30, 37, 5, 45, 13, 53, 21, 61, 29, 36, 4, 44, 12, 52, 20, 60, 28, 35, 3, 43, 11, 51, 19, 59, 27, 34, 2, 42, 10, 50, 18, 58, 26, 33, 1, 41, 9, 49, 17, 57, 25 }; // 64 private static final int[] PC_1 = { 57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4 }; // 56 private static final int[] PC_2 = { 14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32 }; // 48 private static final int[] E = { 32, 1, 2, 3, 4, 5, 4, 5, 6, 7, 8, 9, 8, 9, 10, 11, 12, 13, 12, 13, 14, 15, 16, 17, 16, 17, 18, 19, 20, 21, 20, 21, 22, 23, 24, 25, 24, 25, 26, 27, 28, 29, 28, 29, 30, 31, 32, 1 }; // 48 private static final int[] P = { 16, 7, 20, 21, 29, 12, 28, 17, 1, 15, 23, 26, 5, 18, 31, 10, 2, 8, 24, 14, 32, 27, 3, 9, 19, 13, 30, 6, 22, 11, 4, 25 }; // 32 private static final int[][][] S_Box = {//S-盒 {// S_Box[1] { 14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7 }, { 0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8 }, { 4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0 }, { 15, 12, 8, 2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值