Maven的使用

1.第一个Maven工程

1.1 创建约定目录结构

​ Hello

​ src

​ ——main(存放主程序)

​ ————java(存放源代码文件)

​ ————resources(存放配置文件和资源文件)

​ ——test(存放测试程序)

​ ————java

​ ————resources

​ pom.xml

1.2 创建核心文件 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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.study</groupId>
    <artifactId>maven</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.0</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

1.3 编写主程序

在src/main/java/com/studyMaven/start目录下新建文件Hello.java

package com.studyMaven.start;

public class Hello {
    public String sayHello(String name) {
        return "Hello" + name + "!";
    }
}

1.4 编写测试代码

在src/test/java/com/studyMaven/start目录下新建文件HelloTest.java

package com.studyMaven.start;

import org.junit.Test;
import static org.junit.Assert.assertEquals;

public class HelloTest {
    @Test
    public void testHello(){
        Hello hello = new Hello();
        String result = hello.sayHello("maven");
        assertEquals("Hello maven!",result);

    }
}

1.5 运行基本的Maven命令

打开cmd命令行,进入Hello项目根目录(pom.xml文件所在目录)执行mvn compile命令,查看根目录变化

cmd 中继续录入mvn clean命令,然后再次查看根目录变化

cmd 中录入 mvn compile命令, 查看根目录变化

cmd 中录入 mvn test-compile命令, 查看target目录的变化

cmd 中录入 mvn test命令,查看target目录变化

cmd 中录入 mvn package命令,查看target目录变化

cmd 中录入 mvn install命令, 查看本地仓库的目录变化

注意:运行Maven命令时一定要进入pom.xml文件所在的目录!

2.Maven连网问题

  • 配置本地仓库

  • Maven的核心程序并不包含具体功能,仅负责宏观调度。具体功能由插件来完成。Maven核心程序会到本地仓库中查找插件。如果本地仓库中没有就会从远程*仓库下载。此时如果不能上网则无法执行Maven的具体功能。为了解决这个问题,可以将Maven的本地仓库指向一个在联网情况下下载好的目录。

  • Maven默认的本地仓库:~.m2\repository目录。

    ​ Tips:~表示当前用户的家目录。

  • Maven的核心配置文件位置:D:\develop\apache-maven-3.3.9\conf\settings.xml

  • 设置方式(本地仓库地址): <localRepository>以及准备好的仓库位置</localRepository>

  • 为了以后下载jar包方便,配置阿里云镜像

    <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>central</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
    

3.IDEA中配置Maven

3.1 设置maven的安装目录及本地仓库

在这里插入图片描述

  • Maven home directory:可以指定本地 Maven 所在的安装目录;此外,这里不建议使用IDEA默认的。
  • User settings file / Local repository:可以指定 Maven 的 settings.xml 位置和本地仓库位置。

3.2 配置Maven自动导入依赖的jar包

在这里插入图片描述

  • Import Maven projects automatically:表示 IntelliJ IDEA 会实时监控项目的 pom.xml 文件,进行项目变动设置,勾选上。
  • Automatically download:在 Maven 导入依赖包的时候是否自动下载源码和文档。默认是没有勾选的,也不建议勾选,原因是这样可以加快项目从外网导入依赖包的速度,如果需要源码和文档的时候我们到时候再针对某个依赖包进行联网下载即可。IntelliJ IDEA 支持直接从公网下载源码和文档的。
  • VM options for importer:可以设置导入的 VM 参数。一般不需要主动改,除非项目真的导入太慢了再增大此参数。

4.Maven 打包插件

  Maven本身的打包插件不负责将依赖的jar包一并打入到jar包中。如果项目所依赖的jar包在服务器环境中提供了还好,如果服务器环境中没有提供,则比较悲惨,运行各种ClassNotFound….;因此需要一款能够将项目所依赖的jar包 一并打入到jar中的插件来解决这些问题。

	<build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <!-- 指定主类 -->
                            <mainClass>xxx.xxx.XXX</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

5.总结

  • Maven项目:确定目录结构、pom.xml、主程序以及测试程序
  • 通过一个Maven 的入门案例熟悉Maven的使用。
上一篇:【ITK配准】第二期 多模态配准