DLancerC

Maven 学习笔记(一)

做的项目大部分都是用 Maven 构建的,一直没有系统的学习和整理 Maven 的知识。最近接手的一个项目,研究架构代码的时候,发现一个大牛们写的一个通过解析 PDM 生成对应数据的生成实体对象的一个 Maven 插件。研究的时候发现很多 Maven 知识还不甚了解,找了本 《Maven 实战》系统的学习和整理知识点一遍。

Maven Introduce

Maven 是一种构建工具,同时还是一个依赖管理工具和项目信息管理工具.它提供了中央仓库,能帮我们自动下载构件.

Maven 文件目录

  • bin
    该目录包含mvn运行的脚本,这些脚本用来配置Java命令,mvnDebug,主要是 Maven 运行时开启debug,调试 Maven 本身. m2.conf文件, classworlds的配置文件.
  • boot
    只有一个文件,plexus-classworlds-(version).jar. 一个类加载器. Maven使用它加载对应自己的类库
  • conf
    settings.xml, 全局定义Maven行为.
  • lib
    Maven运行所需的Java类库. 存放的真正的Maven, 里面内置了很多Maven的超级POM.

设置HTTP代理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<settings>
<proxies>
<proxy>
<id>my-proxy</id>
<!-- 是否激活该代理 -->
<active> false | true </active>
<!-- 代理协议 -->
<protocol>http</protocol>
<host></host>
<port></port>
<!--
<username>***</username>
<password>***</password>
设置不需要代理的主机名, * 表示所有以google.com的域名不使用代理
<nonProxyHosts>*.google.com</nonProxxyHosts>
-->
</proxy>
<proxies>
</settings>

Maven ABC

  1. 编写POM

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <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">
    <!-- 指定当前POM版本,Maven2 以及Maven3 默认为 4.0.0 -->
    <modelVersion>4.0.0</modleVersion>
    <!-- groupId+artifaceId定义一个项目的基本坐标-->
    <groupId></groupId>
    <!-- 当前所属group中的Maven的唯一ID-->
    <artifactId><artifactId>
    <!-- artifast项目的版本号 -->
    <version></version>
    <!-- -->
    <name></name>
    </project>
  2. 编写主代码
    主代码位于 src/main/java, Java类的包名需要跟POM中定义的groupId和artifactId相吻合,编译输出为target

  3. 编写测试代码
    测试代码位于 src/test/java
  4. Archetype生成项目骨架
    1
    mvn archetype:generate