• Maven


    一、系统配置

    idea中配置meaven,需要在起始页中进行配置。如果在项目中进行配置则只对当前项目有效。

    配置加速源

    1. aliyunmaven
    2. *
    3. 阿里云公共仓库
    4. https://maven.aliyun.com/repository/public
    5. tencent
    6. tencent maven mirror
    7. https://mirrors.tencent.com/nexus/repository/maven-public/
    8. *

    配置JDK版本

    默认使用jdk1.8

    1. <profile>
    2. <id>jdk-1.8</id>
    3. <activation>
    4. <activeByDefault>true</activeByDefault>
    5. <jdk>1.8</jdk>
    6. </activation>
    7. <properties>
    8. <maven.compiler.source>1.8</maven.compiler.source>
    9. <maven.compiler.target>1.8</maven.compiler.target>
    10. <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
    11. </properties>
    12. </profile>

    配置Tomcat7插件(在pom文件中)

    1. <build>
    2. <!--设置插件-->
    3. <plugins>
    4. <!--具体的插件配置-->
    5. <plugin>
    6. <groupId>org.apache.tomcat.maven</groupId>
    7. <artifactId>tomcat7-maven-plugin</artifactId>
    8. <version>2.1</version>
    9. <configuration>
    10. <port>80</port>
    11. <path>/</path>
    12. </configuration>
    13. </plugin>
    14. </plugins>
    15. </build>

    二、依赖管理

    依赖传递

    依赖具有传递性。

    • 直接依赖:在当前项目中通过依赖配置建立的依赖关系
    • 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源

    依赖传递冲突问题

    • 路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
    • 声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
    • 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的

    可选依赖

    可选依赖指对外隐藏当前所依赖的资源——即不透明

    1. <dependency>
    2. <groupId>junit</groupId>
    3. <artifactId>junit</artifactId>
    4. <version>4.12</version>
    5. <optional>true</optional>
    6. </dependency>

    排除依赖

    排除依赖指主动断开依赖的资源,被排除的资源无需指定版本

    1. <dependency>
    2. <groupId>junit</groupId>
    3. <artifactId>junit</artifactId>
    4. <version>4.12</version>
    5. <exclusions>
    6. <exclusion>
    7. <groupId>org.hamcrest</groupId>
    8. <artifactId>hamcrest-core</artifactId>
    9. </exclusion>
    10. </exclusions>
    11. </dependency>

    依赖范围

    依赖的jar默认情况可以在任何地方使用,可以通过scpoe标签设定其作用范围

    作用范围:

    • 主程序范围有效(main文件夹范围内)
    • 测试程序范围有效(test文件夹范围内)
    • 是否参与打包(package指令范围内)
    scope主代码测试代码打包范例
    compile(默认)YYYlog4j
    testYjunit
    providedYYservlet-api
    runtimeYjdbc

    三、生命周期和插件

    生命周期

    为了让构建过程自动化完成,Maven 设定了三个生命周期,生命周期中的每一个环节对应构建过程中的一个操作。

    clean生命周期

    • pre-clean:执行一些需要在clean之前完成的工作
    • clean:移除所有上一次构建生成的文件
    • post-clean:执行一些需要在clean之后立刻完成的工作

    site生命周期

    • pre-site:执行一些需要在生成站点文档之前完成的工作
    • site:生成项目的站点文档
    • post-site:执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
    • site-deploy:将生成的站点文档部署到特定的服务器上

    default生命周期

    正在上传…重新上传取消

    插件

    插件与生命周期内的阶段绑定,在执行到对应生命周期时执行对应的插件功能。一个插件可对应多个阶段。

    可以通过插件自定义其他功能。

    1. <!--在执行到generate-test-resources生命周期时,将源代码和测试代码打成源码包-->
    2. <build>
    3. <plugins>
    4. <plugin>
    5. <groupId>org.apache.maven.plugins</groupId>
    6. <artifactId>maven-source-plugin</artifactId>
    7. <version>2.2.1</version>
    8. <executions>
    9. <execution>
    10. <goals>
    11. <goal>jar</goal>
    12. <goal>test-jar</goal>
    13. </goals>
    14. <phase>generate-test-resources</phase>
    15. </execution>
    16. </executions>
    17. </plugin>
    18. </plugins>
    19. </build>

    四、继承与聚合

    聚合

    聚合用于快速构建maven工程,一次性即可构建多个模块。

    方法:创建一个空模块,打包类型定义为pom;然后定义当前模块进行构建操作时关联的其他模块名称。

    1. <packaging>pom</packaging>
    2. <modules>
    3. <module>../ssm_controller</module>
    4. <module>../ssm_service</module>
    5. <module>../ssm_dao</module>
    6. <module>../ssm_pojo</module>
    7. </modules>

    参与聚合操作的模块最终执行顺序与模块间的依赖关系有关,与配置顺序无关。

    继承

    通过继承可以实现在子工程中沿用父工程中的配置。

    1. <!--在子工程中,定义当前工程的父工程-->
    2. <parent>
    3. <groupId>fun.it</groupId>
    4. <artifactId>ssm</artifactId>
    5. <version>1.0-SNAPSHOT</version>
    6. <!--填写父工程的pom文件-->
    7. <relativePath>../ssm/pom.xml</relativePath>
    8. </parent>

    继承依赖定义

    在父工程中定义依赖管理

    1. <dependencyManagement>
    2. <dependencies>
    3. <dependency>
    4. <groupId>org.springframeworkgroupId>
    5. <artifactId>spring-contextartifactId>
    6. <version>5.1.9.RELEASEversion>
    7. dependency>
    8. <dependencies>
    9. <dependencyManagement>

    继承依赖使用

    在子工程中定义依赖关系,无需声明依赖版本,版本参照父工程中依赖的版本

    1. <dependencies>
    2. <!--spring环境-->
    3. <dependency>
    4. <groupId>org.springframework</groupId>
    5. <artifactId>spring-context</artifactId>
    6. </dependency>
    7. </dependencies>

    继承与聚合

    继承:用于快速配置

    聚合:用于快速构建项目

    相同点:

    • 聚合与继承的pom.xml文件打包方式均为pom,可以将两种关系制作到同一个pom文件中
    • 聚合与继承均属于设计型模块,并无实际的模块内容

    不同点:

    • 聚合是在当前模块中配置关系,聚合可以感知到参与聚合的模块有哪些
    • 继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己

    五、其他配置

    属性

    自定义属性

    自定义属性等同于定义变量,方便统一维护

    1. <!--定义-->
    2. <properties>
    3. <spring.version>5.1.9.RELEASE</spring.version>
    4. <junit.version>4.12</junit.version>
    5. </properties>
    6. <!--调用-->
    7. <dependency>
    8. <groupId>org.springframework</groupId>
    9. <artifactId>spring-context</artifactId>
    10. <version>${spring.version}</version>
    11. </dependency>

    内置属性

    1. <systemPath>${basedir}/src/main/resources/lib/kingbasejdbc4.jarsystemPath>
    2. ${version}

    Setting属性

    使用Maven配置文件setting.xml中的标签属性,用于动态配置

    ${settings.localRepository}
    

    Java系统属性

    用于读取Java系统属性

    $(user.home)
    

    环境变量属性

    使用Maven配置文件setting.xml中的标签属性,用于动态配置

    ${env.JAVA_HOME}
    

    版本管理

    工程版本

    • SNAPSHOT(快照版本):临时性的版本
    • RELEASE(发布版本):向外发布的比较稳定的版本

    正在上传…重新上传取消

    资源配置

    使其可以在任意配置文件中加载pom文件中定义的属性

    调用格式:${jdbc.url}

    配置资源文件对应的信息:

    1. <resources>
    2. <resource>
    3. <!— 设定配置文件对应的位置目录,支持使用属性动态设定路径 -->
    4. <directory>${project.basedir}/src/main/resources</directory>
    5. <!-- 开启对配置文件的资源加载过滤 -->
    6. <filtering>true</filtering>
    7. </resource>
    8. </resources>

    多环境配置

    1. <profiles>
    2. <profile>
    3. <id>pro_envid>
    4. <properties>
    5. <jdbc.url>jdbc:mysql://127.1.1.1:3306/ssm_dbjdbc.url>
    6. properties>
    7. <activation>
    8. <activeByDefault>trueactiveByDefault>
    9. activation>
    10. profile>
    11. <profile>
    12. <id>dev_envid>
    13. ……
    14. profile>
    15. profiles>

    加载指定环境:

    mvn install -P pro_env
    

    跳过测试

    1. 使用命令跳过测试
    mvn 指令 -D skipTests
    

    执行的指令声明周期必须包含测试环节

    1. 使用界面操作跳过测试

    正在上传…重新上传取消

    1. 使用配置跳过测试
    1. <plugin>
    2. <artifactId>maven-surefire-plugin</artifactId>
    3. <version>2.22.1</version>
    4. <configuration>
    5. <skipTests>true</skipTests><!--设置跳过测试-->
    6. <includes> <!--包含指定的测试用例-->
    7. <include>**/User*Test.java</include>
    8. </includes>
    9. <excludes><!--排除指定的测试用例-->
    10. <exclude>**/User*TestCase.java</exclude>
    11. </excludes>
    12. </configuration>
    13. </plugin>

    私服

    配置本地仓库访问私服的权限(setting.xml):

    1. <servers>
    2. <server>
    3. <id>heima-release</id>
    4. <username>admin</username>
    5. <password>admin</password>
    6. </server>
    7. <server>
    8. <id>heima-snapshots</id>
    9. <username>admin</username>
    10. <password>admin</password>
    11. </server>
    12. </servers>

    配置本地仓库资源来源(setting.xml):

    1. <mirrors>
    2. <mirror>
    3. <id>nexus-heima</id>
    4. <mirrorOf>*</mirrorOf>
    5. <url>http://localhost:8081/repository/maven-public/</url>
    6. </mirror>
    7. </mirrors>

    配置当前项目访问私服上传资源的保存位置(pom.xml):

    1. <distributionManagement>
    2. <repository>
    3. <id>heima-release</id>
    4. <url>http://localhost:8081/repository/heima-release/</url>
    5. </repository>
    6. <snapshotRepository>
    7. <id>heima-snapshots</id>
    8. <url>http://localhost:8081/repository/heima-snapshots/</url>
    9. </snapshotRepository>
    10. </distributionManagement>
  • 相关阅读:
    定时任务动态管理-Scheduled
    web请求cookie中expires总结
    nginx(五十三)nginx中使用的PCRE正则
    (十五)VBA常用基础知识:正则表达式的使用
    手把手教你用 Jenkins 自动部署 SpringBoot
    数值分析复习:误差
    海康威视二次开发适配安卓电视盒子
    [补题记录] Atcoder Beginner Contest 297(F)
    【QT开发(10)】QT 进程
    CF487C Prefix Product Sequence 题解
  • 原文地址:https://blog.csdn.net/guanshengg/article/details/126423978