• Maven 笔记


    打算系统学习一下 Maven 的使用, 在此之前, 我打算先记下自己之前对于 Maven 的理解, 之后再进行对比, 看有哪些疏漏和错误.

    个人的 Maven 理解

    最直观的, Maven 使用 pom.xml 文件来管理项目中所使用的依赖, 这跟 Python 的 requirement.txt、JS 的 package.json 或者是 Ruby 的 Gemfile 都类似. 不过, 其他语言的依赖文件规定的往往是某个包的最低版本, 在实际安装的时候, 很可能会安装最新版, 这个时候实际版本会形成另外一个 lock 文件, 像 package.json.lock. 但是 Maven 不会, 因为在 Maven 的一个依赖节点中, 会要求声明具体的版本.

    其次, 因为和构建相关, 所以 pom.xml 中需要声明项目所属的组织、项目的名称、版本, 同时还要在 properties 节点中声明使用的 Java 版本、编码等信息, build 也是经常见到的一个节点, 但我不是很理解它的作用.

    <!--项目信息-->
    <groupId>域名/项目名</groupId>
    <artifactId>项目名/组件</artifactId>
    <version>版本</version>
    
    <properties>
        <!-- 可以声明编码 -->    
        <!-- 声明 jdk 版本-->
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <!-- 可以自定义一些版本值 -->
    </properties>
    
    <!-- 一些构建相关的信息 -->
    <build>
        ……
    </build>
    
    <!-- 最重要的部分, 列出所依赖的包 -->
    <dependencies>
        <dependency>
            <groupId>域名/项目名</groupId>
            <artifactId>项目名/组件</artifactId>
            <version>版本</version>
        </dependency>
        ……
    </dependencies>
    

    但 Maven 不能像 pip、npm、Gem 一样使用 install xxxx 命令安装依赖, 而是需要自己添加 <dependency>……</dependency> 节点来添加依赖, 然后再使用 mvn install 才能安装, 所以必须借助一些工具, 比如说 Maven 依赖搜索引擎 Maven Repository Search 才能找到自己想要使用的包. 不过好在日常开发中使用到的包都是配套使用的, 所以自行搜索依赖的场景并不是很多.

    但在包管理之外, Maven 还可以进编译和打包, 之前我只会在 Spring Boot 项目中使用 Maven, 因为很简单: 运行是 mvn run、打包是 mvn package, 打包之后就可以通过 java -jar xx.jar 来运行. mvn clean 命令可以删除掉项目中的 target 文件夹, 也就是清除掉所有的编译后的内容.

    JSP 项目

    而对于传统的项目, 我以前并不太会使用 Maven 处理, 最近有需求之后有这些经验.
    一个JSP 项目的 Maven 的典型目录是 javaresourceswebapp.
    在编译时, webapp 文件夹会成为根文件夹, java 文件夹中代码会被编译成 .class 文件放到 webapp/WEB-INF/lib 中, resources 文件夹和 java 文件夹去的地方一样, 但因为是配置文件, 所以不会被编译.
    最最重要的一点, 就是 Maven 如何把这个项目识别成一个传统项目呢, 就是在项目信息下方添加 packaging 信息, 也就是 —— <packaging>war</packaging>, 这样, Maven 就会识别 javaresourceswebapp 的结构了.

    在拿到这样一个 xx.war 包之后, 把它拷贝到服务器 Tomcat 的 webapps文件夹下面, 重启 Tomcat 就可以成功部署.

    Spring Boot 项目

    我 Spring Boot 相关的项目经验并不多, 仅有的经验是 Spring Boot 项目会在根目录产生 mvnw 脚本, 通过该脚本, 可以使用 mvn spring-boot:run 命令运行项目, 在使用 mvn package 时会要求数据库必须有连通性.

  • 相关阅读:
    23种设计模式(12):策略模式
    23种设计模式(11):责任链模式
    23种设计模式(10):命令模式
    23种设计模式(9):访问者模式
    23种设计模式(8):观察者模式
    23种设计模式(7):中介者模式
    23种设计模式(6):模版方法模式
    创建型模式总结
    23种设计模式(5):原型模式
    leetcode6
  • 原文地址:https://www.cnblogs.com/imzhizi/p/maven-bi-ji.html
Copyright © 2020-2023  润新知