Maven Example Project

Apache Maven 是 apache 下的一个用于项目构建和依赖管理的项目管理工具。它的官网是:https://maven.apache.org/

pom.xml 文件是 Maven 的主要配置文件,配置项目的 groupIdartifactIdversion 等 Maven 项目必要信息;配置 Maven 项目使用的远程仓库;定义 Maven 项目打包形式;定义 Maven 项目的依赖关系等。

安装配置

  1. 下载 maven 最新版本,https://maven.apache.org/download.cgi
  2. 解压下载的安装包(例如:apache-maven-3.6.3-bin.zip)到某个目录(注意:目录最好不要带中文和空格,例如:windows解压至 d:\soft\maven;mac 解压至 /Users/sh/soft/maven)
  3. 配置环境变量,以上述目录为例
  • windows 环境下将目录 d:\soft\maven\bin 添加到环境变量 Path 上
  • mac 环境,在 ~/.bash_profile 文件中加入一行,然后执行一下 source ~/.bash_profile 使之生效
export PATH=/Users/sh/maven/bin:$PATH
  1. 命令行下执行 mvn --version,如果能正确显示版本号,说明安装正确,比如显示内容如下:
➜ mvn --version
Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-05T03:00:29+08:00)
Maven home: /Users/sh/bin/mvn
Java version: 1.8.0_212, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_212.jdk/Contents/Home/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "mac os x", version: "10.15", arch: "x86_64", family: "mac"

Maven 项目结构

  • src/main/java 项目 Java 源文件(.java)
  • src/main/resources 项目资源文件
  • src/test/java 项目测试 Java 源文件(.java),单元测试/集成测试等
  • src/test/resources 项目测试资源文件
  • target 项目输出目录,项目编译产出物以及编译中产生的临时文件
  • pom.xml Maven配置文件(POM, Project Object Model)

Maven 常用命令

  • mvn compile 编译源代码
  • mvn package 根据pom.xml中的配置生成构件包(例如:jar包、war包)
  • mvn install 将生成的构件包安装到本地仓库 Repository 中
  • mvn deploy 将生成的构件包部署到远程仓库
  • mvn test-compile 编译测试源代码
  • mvn test 运行测试
  • mvn clean 清空项目编译输出目录(即 target 目录)
  • mvn clean package -Dmaven.test.skip=true 先清空项目编译输出目录再打包,跳过测试

pom.xml 配置项说明

groupId / artifactId / verion

在 maven 中,由 groupId + artifactId + verion 来唯一确定一个项目的其中一个版本。

  • groupId:组织名称,可表示为公司下的某个项目,例如:com.zeroten.javales 表示ZeroTen旗下的Java课程项目
  • artifactId:项目里某个模块,例如:java-les-maven-example 表示Java课程项目下的Maven示例模块
  • verion:版本号,例如:1.0.0

 

 

Maven项目进行Install时报出如下错误

Failed to execute goal org.apache.maven.plugins:maven-war-plugin:3.0.0:war (default-war) on project DemoWebWar: Execution default-war of goal org.apache.maven.plugins:maven-war-plugin:3.0.0:war failed: basedir D:\eclipse-workspace\DemoWebWar\web does not exist -> [Help 1]

提示说明配置中需要的Web.xml不存在,对于它存在或不存在时,可有下面两种情况。

如果WEB-INF/web.xml文件存在,需要在pom.xml文件的<build>节点中,加上maven-war-plugin插件配置。

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.0.0</version>
                <configuration>
                   <webResources>                            <resource>
             <directory>WebContent</directory> 
       </resource>
       </webResources>
                </configuration>
            </plugin>
        </plugins>
    </build>



如果WebContent/WEB-INF/web.xml文件不存在,则按下面的方式配置。

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.0.0</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
        </plugins>
    </build>