maven入门笔记

Maven目录结构

  • maven的目录结构如下
src
        - main
            -java
                -package
       - test
           - java
               - package
       - resources
pom.xml

配置文件

  • maven基于约定,减少了配置,比如约定的配置结构。
  • maven的配置文件名为pom.xml配置文件的路径为项目工程的根目录。
<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.imooc.maven01</groupId>
<!-- 项目名词 -->
<artifactId>maven01-model</artifactId>
<!-- 版本 -->
<version>0.0.1SNAPSHOT</version>
<!--打包类型-->
<packaging>jar</packaging>
<!-- 依赖 -->
<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
</dependencies>
</project>

构建命令

maven的基本命令是mvn,通过使用不同的参数来实现不同的效果。

mvn [options] [<goal(s)>] [<phase(s)>]

查看系统版本

mvn -v

编译项目

mvn compile

测试项目

mvn test

打包项目

mvn package

删除target目录

mvn clean

安装jar包到本地仓库,安装的目录:组织ID/项目ID/版本

mvn install

跳过测试

mvn package -Dmaven.test.skip=true

archetype创建项目骨架

我么可以使用maven的archetype插件来自动地创建项目的骨架。
交互式的创建

mvn archetype:generate

批处理模式

mvn archetype:generate -B -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.1  -DgroupId=com.company -DartifactId=project -Dversion=1.0-SNAPSHOT -Dpackage=com.company.project

坐标和仓库

maven的构建是基于坐标的,groupId为组织的名字,如com.company,artifactedId为项目名字加模块名,如oops-model1version为版本。

<groupId>com.maven01</groupId>
<artifactId>model</artifactId>
<version>1.0-SNAPSHOT</version>

仓库:存储maven项目依赖包的地方,首先会在本地仓库中去查找,如果没有找到,就去中央仓库中去查找,如果再没有找到就报错。

maven的生命周期

Maven有以下三种标准的生命周期:

  • clean 清理项目
  • default 构建项目
  • site 生成项目文档站点

maven的生命周期相互独立,每个生命周期中包含一些阶段,各个生命周期中的阶段是有顺序的,后面的阶段依赖于前面的阶段,但是不同的生命周期的阶段是不会相互影响的。maven核心只提供基本的功能,他执行的如mvn clean,mvn package等命令都是通过调用maven插件来实现的,他们分别对应生命周期的不同阶段,这些阶段绑定了相应插件的goal(目标:插件具体实现的功能)。maven有许多内建的插件,并且已默认绑定到了生命周期的各个阶段。

Phase plugin:goal
generate-resources plugin:descriptor
process-resources resources:resources
compile compiler:compile
process-test-resources resources:testResources
test-compile compiler:testCompile
test surefire:test
package jar:jar and plugin:addPluginArtifactMetadata
install install:install
deploy deploy:deploy
可以通过在pom.xml将插件的目标绑定到生命周期的具体阶段中去,如果没有指定那么他将会被绑定到默认的阶段(具体是什么阶段需要看插件的文档说明),如果指定了阶段,那么他会覆盖默认的阶段,并且插件的目标可以被绑定到多个阶段上去。
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>3.1.0</version>
            <executions>
                <execution>
                    <phase>compile</phase>
                    <id>compile-package-source</id>
                    <goals>
                        <goal>jar-no-fork</goal>
                    </goals>
                </execution>
                <execution>
                    <phase>compile</phase>
                    <id>package-source</id>
                    <goals>
                        <goal>jar-no-fork</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

参考

原文地址:https://www.cnblogs.com/ZiYangZhou/p/11657840.html