maven 学习记录

maven 学习

手动创建一个 maven 项目

maven 项目包结构

1.首先创建一个如下的目录结构,然后再与 project name 同级目录下创建 pom.xml 可以复制如下

+-- project name
|   +-- pom.xml
|   +-- src
|   |   +-- main
|   |   |   +-- java
|   |   |   |   +-- java源文件
|   |   |   +-- source 资源文件 图片等等
|   |   +-- test
|   |   |   +-- java
|   |   |   |   +-- java源文件
|   |   |   +-- source 资源文件 图片等等

2.目录创建完毕,需要编写 pom.xml 文件,可以复制下面的,在此过程中,需要配置
groupId, artifactId, version, dependencies 属性,配置说明如下.

pom.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <!--配置 JDK 的版本-->
    <!--避免出现如下错误信息-->
    <!--
        [ERROR] 不再支持源选项 5.请使用 6 或更高版本.
        [ERROR] 不再支持目标选项 1.5.请使用 1.6 或更高版本.
    -->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
        <!--此处根据你使用的 JDK 版本,修改下面三处-->
        <java.version>10</java.version>
        <maven.compiler.source>10</maven.compiler.source>
        <maven.compiler.target>10</maven.compiler.target>
    </properties>

    <!--组名,一般是公司的域名的倒写 + 工程名-->
    <groupId>xyz.snowflake.maven01</groupId>
    <!--模块名,一般是工程名+ 模块名-->
    <artifactId>maven01-model</artifactId>
    <!--版本号,可以直接复制-->
    <version>0.0.1SNAPSHOT</version>
    <!--配置打包方式,默认为 jar-->
    <packaging>jar</packaging>
    <!--配置依赖,可以直接复制-->
    <dependencies>
        <!--配置 junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.10</version>
        </dependency>
    </dependencies>

</project>

3.完成上述后,可以打开控制台,进入到 project name 文件夹下,执行以下命令

  • mvn compile
    • 编译 main 文件下的 java 源文件,此过程会下载一些依赖,并且会生成 target 文件夹
  • mvn test
    • 测试
maven 常用命令
mvn -v             查看 maven 的版本
    compile        编译 main 的文件夹下的源文件(java 文件)
    test           测试
    package        打包项目,生成一个.jar 文件(默认生成一个.jar文件,也可以生成 .war .pom .zip文件)
    clean          清除编译生成的 target 文件夹
自动创建目录的两种方式
  1. mvn archetype:generate
    按照提示来创建目录
  2. mvn archetype:generate -DgroupId= -DartifactId= -Dversion=1.0.0SNAPSHOT -Dpackage=
-DgroupId=-DartifactId=-Dversion=1.0.0SNAPSHOT-Dpackage=
组织名项目名-模块名版本号包名

[注] : 不需要引号

  • 坐标(由groupId artifactId version定位)
    • 构件
  • 仓库
    • 仓库分为本地仓库和远程仓库
    • 注:如果本地仓库没有找到所需要的依赖,会访问全球仓库,然后自动下载到本地舱中
    • 全球仓库地址:
    • 默认的全球仓库地址:https://repo.maven.apache.org/maven2/
  • 镜像仓库:
    • 需求的条件,如果无法直接访问外国的一些依赖,此时会需要到访问国内的镜像仓库.
    • 修改镜像仓库地址 : 需要修改 setting.xml 文件,修改 mirrors 标签
    • mirrorOf : 为哪个仓库做镜像
    • *: 表示全部仓库
    • 一旦配置镜像,将不能访问源镜像,会直接访问镜像地址
  • 更改本地仓库地址:
    • 修改 setting.xml 文件中的 localRepository 标签,修改本地文件夹地址,并建一个 repo 文件夹作为本地仓库
    • 并且将 setting.xml 文件复制到 repo 文件夹
maven 生命周期
  • 完整的项目构建过程包括 : 清理, 编译, 测试, 打包, 集成测试, 验证, 部署
插件的作用
  • 插件是对 maven 的具体实现
maven 定义了三套相互独立的生命周期
- clean             清理项目
    - pre-clean     执行清理前的工作
    - clean         清理上一次构建生成的所有文件
    - post-clean    执行清理后的文件
- default(最核心)      构建项目
    - 会执行 compile test package install 等命令
- site              生成项目站点(根据pom.xml文件自动生成站点)
    - pre-site      在 生成项目站点前要完成的工作
    - site          生成项目的站点文档
    - post-site     在生成项目站点后要完成的工作
    - site-deploy   发布生成的站点到服务器上
添加插件的代码事例
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <rtifactId>maven-source-plugin</artifactId>
            <version>2.4</version>
            <!--执行阶段-->
            <executions>
                <execution>
                    <phase>package</phase>
                    <!--执行的目标-->
                    <goals>
                        <goal>jar-no-fork</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

[注] build 标签是在 project 标签下一级

pom.xml 文件中主要元素说明
<!--项目的约束条件-->
<project>
    <!--指定当前 pom 的版本-->
    <modelVersion>4.0.0</modelVersion>
    <!--坐标信息-->
    <groupId>反写的公司网址+项目名</groupId>
    <artifactId>项目名+模块名</artifactId>
    <!--
        第一个 0 表示大版本号
        第二个 0 表示分支版本号
        第三个 0 表示小版本号
        0.0.1
        snapshot    快照
        alpha       内部测试版本
        beta        公测版本
        release     稳定版本
        GA          正式发布
    -->
    <version>1.0.0-SNAPSHOT</version>
    <!--打包方式 默认是 jar 还可以为 war zip pom-->
    <packaging>jar</packaging>
    <!--项目描述名,产生描述文档时使用-->
    <name></name>
    <!--项目地址-->
    <url></url>
    <!--项目描述-->
    <description></description>
    <!--项目开发人员-->
    <developers></developers>
    <!--许可证信息,一些开源框架的许可证信息-->
    <licenses></licenses>
    <!--组织信息-->
    <organization></organization>
    <!--添加一些依赖信息-->

    <dependencies>
        <!--配置 junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.10</version>
            <type></type>
            <!--依赖作用范围-->
            <scope></scope>
            <!--
                设置依赖是否可选,默认为false,
                如果是false,子项目是自动继承;
                如果是true,子项目必须写入引用给依赖
            -->
            <optional></optional>
            <!--排除此依赖依赖的其他依赖-->
            <exclusions>
                <!--可以填写多个依赖-->
                <exclusion>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
    <!--依赖的管理-->
    <dependencyManagement>
        <!--
            例如多个项目都需要 junit ,此时可以将其抽象出来,供子类继承
        -->
        <dependency></dependency>
    </dependencyManagement>

    <build>
        <!--插件列表,可以有多个插件-->
        <plugins>
        <groupId>org.apache.maven.plugins</groupId>
        <rtifactId>maven-source-plugin</artifactId>
        <version>2.4</version>
        <!--执行阶段-->
        <executions>
            <execution>
                <phase>package</phase>
                <!--执行的目标-->
                <goals>
                    <goal>jar-no-fork</goal>
                </goals>
            </execution>
        </executions>
        </plugins>
    </build>
    <!--父模块-->
    <parent></parent>
    <!--聚合多个模块,可以在一起编译多个模块-->
    <modules></modules>
</project>
添加依赖的原则
  1. 短路优先
  2. 先定义优先

建议 : 在创建java包名时,建议与 groupId 一致

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值