Apache Maven的定义
Maven 是一个项目管理工具,它包含:
- 一个项目对象模型 (Project Object Model)
- 一组标准集合
- 一个项目生命周期(Project Lifecycle)
- 一个依赖管理系统(Dependency Management System)
- 用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
Maven 遵循约定优于配置的概念,它给项目提供一系列的默认行为。 在没有自定义的情况下:
- 源代码假定是在 ${basedir}/src/main/java,
- 资源文件假定是在 ${basedir}/src/main/resources 。
- 测试代码假定是在 ${basedir}/src/test/java。
- 编译好的字节码放到 ${basedir}/target/classes
- 创建一个可分发的JAR文件在 ${basedir}/target
Maven的核心插件使用了一组通用的约定,以用来编译源代码,打包可分发的构件,生成web站点,还有许多其他的过程。
Maven有一个定义好的生命周期和一组知道如何构建和装配软件的通用插件。如果你遵循这些约定,Maven 只需要几乎为零的工作——仅仅是将你的源代码放到正确的目录,Maven 将会帮你处理剩下的事情。当然,如果你不想遵循约定,Maven也会允许你自定义默认值来适应你的需求。
Maven的基础
- Maven使用入门
- 编写POM(Maven项目的核心是pom.xml)
-
groupId:定义当前 Maven 项目隶属的实际项目
- artifactId:该元素定义实际项目中的一个 Maven 项目(模块),推荐的做法是使用实 际项目名称作为artifactId 的前缀,比如上例中的 artifactId 是 nexus-indexer,使用了 实际项目名 nexus 作为前缀,这样做的好处是方便寻找实际构件
- version:该元素定义 Maven 项目当前所处的版本,如上例中 nexus-indxer 的版本是2.0.0packaging:该元素定义 Maven 项目的打包方式。
- classifier:该元素用来帮助定义构建输出的一些附属构件
-
-
- 典型的Maven运行:
- mvn clean compile
- mvn clean test
- mvn clean package
- mvn clean install
- 借助maven-shade-plugin插件生成可执行的jar文件
- plugin元素在POM中的相对位置应该在<project><build><plugins>下面
- 使用Archetype生成项目骨架
- 编写POM(Maven项目的核心是pom.xml)
- 坐标和依赖
-
-
依赖范围与 classpath 的关系
依赖范围 (Scope)
对于编译 classpath 有效
对于测试 classpath 有效
对于运行时 classpath 有效
例子
-
-