美文网首页
Java项目构建-Maven

Java项目构建-Maven

作者: ningping | 来源:发表于2017-12-28 13:55 被阅读0次

例子:HelloWorld

创建

用mvn插件archetype创建helloworld项目:

egao$ mvn archetype:generate -DgroupId=com.ellie.helloworld -DartifactId=helloworld -Dpackage=com.ellie.helloworld -Dversion=1.0-SNAPSHOT

项目的默认目录结构如下(除非特别定制,maven项目都遵循这种惯例):

egao$ cd helloworld

egao$ ll

total 0

-rw-r--r--  1 egao  staff  762 Dec 28 10:24 pom.xml

drwxr-xr-x  4 egao  staff  136 Dec 28 10:24 src

编译打包

"mvn package",将执行mvn默认生命周期中从开始到package 阶段(包括default-resources,default-compile,default-testResources,default-testCompile,default-test,default-jar)的所有任务。

egao$ mvn package

[INFO] Scanning for projects...

...

[INFO] Building helloworld 1.0-SNAPSHOT

...

[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ helloworld ---

...

[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ helloworld ---

...

[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ helloworld ---

...

[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ helloworld ---

...

[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ helloworld ---

...

[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ helloworld ---

...

[INFO] BUILD SUCCESS

...

构建后会生成target目录,class文件和jar文件位于该目录:

egao$ ll

total 8

-rw-r--r-- 1 egao staff 762 Dec 28 10:24 pom.xml

drwxr-xr-x 4 egao staff 136 Dec 28 10:24 src

drwxr-xr-x 8 egao staff 272 Dec 28 14:08 target

egao$ java -cp target/helloworld-1.0-SNAPSHOT.jar com.ellie.helloworld.App

Hello World!

Maven概念解析

POM

项目坐标:groupId+artifactId+version+packaging

子项目会继承父项目的pom。所有pom都继承自一个super pom。

通过mvn help:effective-pom可以查看构建时真正使用的pom。

插件和生命周期

maven控制构建过程(生命周期),构建过程的每个具体步骤是交给插件执行的。

以HelloWorld为例,它使用默认的生命周期。

process-resources 阶段:resources:resources

compile 阶段:compiler:compile

process-classes 阶段:(默认无目标)

process-test-resources 阶段:resources:testResources

test-compile 阶段:compiler:testCompile

test 阶段:surefire:test

prepare-package 阶段:(默认无目标)

package 阶段:jar:jar

在HelloWorld的构建过程中,maven-compiler-plugin这个插件使用了两次:编译业务代码(compile阶段,compiler:compile),编译测试代码(test-compile阶段,compiler:testCompile)。

依赖管理

依赖传递:项目依赖A.jar, A.jar又依赖B.jar,项目只需定义对A的依赖。maven会根据A的pom文件自动下载B

依赖的scope:决定了依赖关系的适用范围。默认是compile,任何时候都会被包含在 classpath 中,包括打包。test scope只有在test阶段才会起作用。provided scope在打包时不起作用,它表示运行环境会提供这个依赖的jar

public的maven项目可以从默认的maven库下载:http://repo.maven.org/maven2

maven下载的jar在本地默认存放在~/.m2/repository中。

maven 查找需要的 jar 文件时,会先在本地找,然后去远程库找。

复杂的例子:多模块web项目

References

Apache Maven

Apache Maven 入门篇 ( 上 )

Apache Maven 入门篇(下)

Maven Archetype的设计和使用

Apache Ant 教程

相关文章

  • 概述

    maven(几乎所有java项目都使用) maven功能:项目构建、依赖管理maven安装:https://mav...

  • Maven入门教程

    GitHub仓库:Fundebug/maven-tutorial Maven简介 Maven是Java项目构建工具...

  • jenkins—maven初试

    jenkins-gitlab容器实验maven构建 构建maven项目,在jenkin容器中安装java以及mav...

  • 一篇小短文让你了解Maven

    简介 Apache Maven是一个项目管理及构建工具,主要用于Java项目的构建,Maven还可以用于构建和管理...

  • Maven - 简介

    Maven简介 Maven是一个强大的Java项目构建工具。由于Maven是用Java开发的,因此Maven被更多...

  • IntelliJ IDEA - Maven介绍以及设置

    Maven负责管理和构建项目 通过IntelliJ IDEA的Maven骨架可以快速构建Java Web环境,在创...

  • IDEA + maven 零基础构建 java agent 项目

    200316-IDEA + maven 零基础构建 java agent 项目 Java Agent(java 探...

  • maven运行原理

      maven至今还是Java编程语言构建的事实标准,大部分项目还在使用maven来进行构建,因此了解maven内...

  • maven内部运行原理解析(一)

    maven至今还是Java编程语言构建的事实标准,大部分项目还在使用maven来进行构建,因此了解maven内部运...

  • 项目管理工具maven

    介绍 Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。Maven 也可被用于构建和管理各...

网友评论

      本文标题:Java项目构建-Maven

      本文链接:https://www.haomeiwen.com/subject/jjzmgxtx.html