从0到0.1学习 maven(一:概述及简单入门)

该文章为maven系列学习的第一篇,共三篇 第二篇快速入口: 第三篇快速入口:

概述

从没用的有趣小知识开始

Maven可以翻译成“知识的累积”,“专家/行家”。

Maven是什么?

  1. 服务于java的自动化构建工具
    什么是构建?把动态web工程经过编译得到的编译结果直接部署到服务器上的整个过程 构建的环节:
clean->compile->test->report->package->install->deploy
    ps: package过程把动态web工程打war包,java工程打jar包 deploy时将动态Web工程生成的war包复制到servlet容器下,可使其运行
  1. 依赖管理工具与项目信息管理工具
    类库是通过依赖的方式引入进项目,maven通过其坐标系统可以精准的定位每一个artifacts/控件,进行有序地依赖管理。 此外,maven也管理了如开发者列表,项目描述等琐碎的项目信息。

为什么用Maven?

  1. 把一个项目拆分成多个工程
  2. 把jar包保存在仓库中
  3. 可使用统一规范的方法去下载jar包
  4. 预防jar包版本不一致
  5. 自动导入依赖包

使用与配置入门

目录结构

可以看到一共有四个文件夹和三个文件。

    bin:包含了maven的运行脚本。命令行中命令例如“mvn -v”就是在调用这些脚本。 boot:存放类加载器框架,用于加载自己的类库。 conf:包含了settings.xml,修改该文件可以全局定制maven的行为。或将该文件复制到~/.m2/中,控制该用户下的maven。 lib:包含了maven运行时需要的所有类库。

编写pom

clean:清理输出文件夹/target compile:将主代码编译到target/class文件夹

maven中默认的项目主代码位于/src/main/java 默认的测试代码位于/src/test/java

    测试部分使用JUnit/@Test/assertEquals() 此处不详细展开了

使用Archetype生成骨架

先创建好一个空的目录,若是maven3则运行

mvn archetype:generate

运行后会开始下载并列出一大堆archetype,按照默认值回车就好,再填好前面说的三要素,就创建成功了。

小彩蛋:直接运行包含main的jar

step1:编写一个带有main的class(可以试一下上面的archetype创建) step2:在project→build→plugins下添加插件maven-shade-plugin

<build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>1.2.1</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals><goal>shade</goal></goals>
            <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
            <mainClass>com.ptyp.App(这里写你自己的main所在的类)</mainClass>
            </transformer> </transformers>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

step3:执行mvn clean install 可以看到target文件夹中出现了两个jar,其中original是不带main的,另外一个是带main的,我们点进去看看META-INFMANIFEST.MF文件 发现它多了一行Main-Class

step4:运行该jar文件:java -jar jar名.jar,成功打印~ 彩蛋结束

第一篇完




参考

  1. 《Maven实战》- 许晓斌
经验分享 程序员 微信小程序 职场和发展