Maven (1)

Maven

1. pom.xml文件是maven系统的基础组件, POM(Project Object Model:工程对象模型)

2. maven会创建默认的工程结构:

假定 ${basedir} 表示工程目录:

配置项 默认值
source code ${basedir}/src/main/java
resources ${basedir}/src/main/resources
Tests ${basedir}/src/test
Complied byte code ${basedir}/target
distributable JAR ${basedir}/target/classes

3. maven是一个基于Java的工具,它的版本与JDK版本对应关系

  • Maven 3.3 要求 JDK 1.7 或以上
  • Maven 3.2 要求 JDK 1.6 或以上

4. maven中是通过坐标来定位和标识一个组件、工程或依赖项的。通过这个坐标就能在maven仓库中找到对应的组件。

  • groupId, 相当于公司名称
  • artifactId, 相当于项目名称
  • version, 项目的版本

5. POM文件的基础形式如下

<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.companyname.project-group</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>

</project>

6. 所有的POM都继承自一个父POM,这个父pom被称为Super POM,它包含了一些可以被继承的默认设置。

  • Maven会使用effective pom来执行相关的目标,工程自身定义的pom内容,加上继承自super pom的内容一起形成了effective pom.
  • 可以通过mvn help:effective-pom来查看effective pom.通过effective pom可以看到maven在执行目标时需要用到的默认工程源码目录结构、测试源码目录结构、输出目录、需要的插件、仓库以及报表目录
  • 注意: Maven的pom.xml文件不需要手工编写,maven提供了大量的原型插件来创建工程,包括工程结构和pom.xml文件

7. 构建生命周期

  • Maven有三个标准的构建生命周期
    • clean
      • pre-clean
      • clean
      • post-clean
    • build
      • validate
      • compile
      • test
      • package
      • install
      • deploy
    • site
      • pre-site
      • site
      • post-site
      • site-deploy
  • 每个生命周期都是由一组有顺序的阶段组成(如上)
  • 可以自定义目标(goal),并且将目标注入到阶段,如下:我们将 maven-antrun-plugin:run 目标添加到 Build 生命周期的一部分阶段中。这样我们可以显示生命周期的文本信息。
<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.companyname.projectgroup</groupId>
<artifactId>project</artifactId>
<version>1.0</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.1</version>
<executions>
   <execution>
      <id>id.validate</id>
      <phase>validate</phase>
      <goals>
         <goal>run</goal>
      </goals>
      <configuration>
         <tasks>
            <echo>validate phase</echo>
         </tasks>
      </configuration>
   </execution>
   <execution>
      <id>id.compile</id>
      <phase>compile</phase>
      <goals>
         <goal>run</goal>
      </goals>
      <configuration>
         <tasks>
            <echo>compile phase</echo>
         </tasks>
      </configuration>
   </execution>
   <execution>
      <id>id.test</id>
      <phase>test</phase>
      <goals>
         <goal>run</goal>
      </goals>
      <configuration>
         <tasks>
            <echo>test phase</echo>
         </tasks>
      </configuration>
   </execution>
   <execution>
         <id>id.package</id>
         <phase>package</phase>
         <goals>
            <goal>run</goal>
         </goals>
         <configuration>
         <tasks>
            <echo>package phase</echo>
         </tasks>
      </configuration>
   </execution>
   <execution>
      <id>id.deploy</id>
      <phase>deploy</phase>
      <goals>
         <goal>run</goal>
      </goals>
      <configuration>
      <tasks>
         <echo>deploy phase</echo>
      </tasks>
      </configuration>
   </execution>
</executions>
</plugin>
</plugins>
</build>
</project>

现在打开命令控制台,跳转到 pom.xml 所在目录,并执行以下 mvn 命令。

C:\MVN\project>mvn compile

Maven 将会开始处理并显示直到编译阶段compile的构建生命周期的各个阶段。(Build周期中compile阶段及之前的阶段都会被执行,但是只有validate阶段和compile阶段中会执行maven-antrun-plugin:run 目标)

  • Maven会给各个阶段默认提供一些目标

猜你喜欢

转载自blog.csdn.net/chenyunqiang/article/details/78807411