盒子
盒子
文章目录
  1. Maven环境的搭建
  2. 第一个Maven项目示例
  3. 添加依赖
  4. 快速构建Maven项目目录骨架
  5. Maven中的仓库
    1. 仓库类型
    2. 修改仓库指向
    3. 修改本地仓库路径
  6. pom.xml解析
  7. 配置多个仓库

Maven学习笔记

Maven是基于对象模型(POM)通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具

解决项目在不同环境下运行需要手动导入大量jar包的问题

Maven环境的搭建

  • Maven下载
  • Maven

    第一个Maven项目示例

  • Maven项目目录结构
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    -src
    pom.xml
    -main
    -java
    -package
    HelloWold.java
    -test
    -java
    -package
    HelloWorldTest.java
    -resources

  • Maven项目代码
  • HelloWorld.java

    1
    2
    3
    4
    5
    6
    7
    package io.github.grooters;

    public class HelloWorld{
    public String sayHello(){
    return "Hello World";
    }
    }

    HelloWorldTest.java

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    package io.github.grooters;

    import org.junit.*;
    import org.junit.Assert.*;

    public class HelloWorldTest{
    @Test
    public void testHello(){
    Assert.assertEquals("Hello World",new HelloWorld().sayHello());
    }
    }

    pom.xml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>io.github.grooters</groupId>
    <artifactId>FirstMaven</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <dependencies>
    <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.10</version>
    </dependency>
    </dependencies>
    </project>

  • Maven命令
  • 1
    mvn compile

    编译HelloWorld.java生成字节码文件

    1
    mvn test

    测试HelloWorld.java生成测试报告

    1
    mvn package

    生成Maven项目jar包

    1
    mvn clean

    添加依赖

  • Maven相关命令
  • 1
    mvn install

    将该项目jar包添加到本地仓库

    导入第一个项目的jar包只需在pom.xml中添加以下依赖:

    1
    2
    3
    4
    5
    <dependency>
    <groupId>io.github.grooters</groupId>
    <artifactId>FirstMaven</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    </dependency>

    完整pom.xml为:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>io.github.grooters</groupId>
    <artifactId>SecondMaven</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <dependencies>
    <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.10</version>
    </dependency>
    <dependency>
    <groupId>io.github.grooters</groupId>
    <artifactId>FirstMaven</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    </dependency>
    </dependencies>
    </project>

    快速构建Maven项目目录骨架

    1
    mvn archetype:generate -DgroupId=io.github.grooters -DartifactId=ThirdMaven -Dversion=1.0.0-snapshot -Dpackage=io.github.grooters.pac

    即可创建一个拥有如下目录骨架的Maven项目:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    -src
    pom.xml
    -main
    -java
    -pac
    App.java
    -test
    -java
    -pca
    AppTest.java
    -resources

    Maven中的仓库

    仓库类型

  • 本地仓库
  • 远程仓库
  • 指向中央仓库,仓库地址可在lib下的maven-model-builder-3.5.4.jar中查看

  • 镜像仓库
  • 可自定义仓库指向,如指向国内Maven仓库

    修改仓库指向

    在conf中的settings.xml文件中的145行左右:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <mirrors>
    <mirror>
    <!--镜像仓库唯一id!-->
    <id>maven.net.cn</id>
    <!--需要代替的仓库指向id,若代替全部仓库指向,则使用*-->
    <mirrorOf>Central</mirrorOf>
    <name>Central Mirrors in China.</name>
    <url>http://my.repository.com/repo/path</url>
    </mirror>
    </mirrors>

    修改本地仓库路径

    本地仓库默认路径为:C:\Users\Administrator.m2

    修改方法为:

    在conf中的settings.xml文件中的53行左右添加:

    1
    <localRepository>D:/Maven/repo</localRepository>

    然后进入到FirstMaven把输入以下命令,将其添加进新仓库

    1
    mvn clean compile

    pom.xml解析

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <groupId>反写公司网址+项目名</groupId>

    <artifactId>项目名+模块名</artifactId>

    <version>第一个0为大版本号,第二个0为分支版本号,第三个零为小版本号,如:0.0.1beta</version>

    <scope>test,设置依赖可用范围,test表示测试可用</scope>

    <package>war,默认为jar</package>

    <name>项目描述名</name>

    <url>项目地址</url>

    </description>描述</description>

    <organization>团队成员</organization>



    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    //快照
    snapshot

    //内测
    alpha

    //公测
    beta

    //稳定
    Release

    //正式发布
    GA

    配置多个仓库

    转至:【maven】配置多个仓库

  • 在setting文件中
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    <profiles>
    <profile>
    <!-- id必须唯一 -->
    <id>myRepository1</id>
    <repositories>
    <repository>
    <!-- id必须唯一 -->
    <id>myRepository1_1</id>
    <!-- 仓库的url地址 -->
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <releases>
    <enabled>true</enabled>
    </releases>
    <snapshots>
    <enabled>true</enabled>
    <updatePolicy>always</updatePolicy>
    </snapshots>
    </repository>
    </repositories>
    </profile>
    <profile>
    <!-- id必须唯一 -->
    <id>myRepository2</id>
    <repositories>
    <repository>
    <!-- id必须唯一 -->
    <id>myRepository2_1</id>
    <!-- 仓库的url地址 -->
    <url>http://repository.jboss.org/nexus/content/groups/public-jboss/</url>
    <releases>
    <enabled>true</enabled>
    </releases>
    <snapshots>
    <enabled>true</enabled>
    <updatePolicy>always</updatePolicy>
    </snapshots>
    </repository>
    </repositories>
    </profile>
    </profiles>

    <activeProfiles>
    <!-- 激活myRepository1 -->
    <activeProfile>myRepository1</activeProfile>
    <!-- 激活myRepository2 -->
    <activeProfile>myRepository2</activeProfile>
    </activeProfiles>

  • 在项目pom中
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <repositories>
    <repository>
    <!-- id必须唯一 -->
    <id>jboss-repository</id>
    <!-- 见名知意即可 -->
    <name>jboss repository</name>
    <!-- 仓库的url地址 -->
    <url>http://repository.jboss.org/nexus/content/groups/public-jboss/</url>
    </repository>
    <repository>
    <!-- id必须唯一 -->
    <id>aliyun-repository</id>
    <!-- 见名知意即可 -->
    <name>aliyun repository</name>
    <!-- 仓库的url地址 -->
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    </repository>
    </repositories>
    支持一下
    扫一扫,支持Grooter
    • 微信扫一扫
    • 支付宝扫一扫