本篇承接上一篇: maven 入门介绍

POM

POM 代表工程对象模型。它是使用 Maven 工作时的基本组件,是一个 xml 文件。它被放在工程根目录下,文件命名为 pom.xml。
能够在 POM 中设置的一些配置如下:
project dependencies
plugins
goals
build profiles
project version
developers
mailing list




所有的 POM 文件需要 project 元素和三个必须的字段:groupId, artifactId,version。
在仓库中的工程标识为 groupId:artifactId:version


示例:


<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>


所有的 POM 都继承自一个父 POM(无论是否显式定义了这个父 POM)。父 POM 也被称作 Super POM,它包含了一些可以被继承的默认设置。
Maven 使用 effective pom(Super pom 加上工程自己的配置)来执行相关的目标,它帮助开发者在 pom.xml 中做尽可能少的配置,当然这些配置可以被方便的重写。
查看 Super POM 默认配置的一个简单方法是执行以下命令:mvn help:effective-pom。

在Eclipse中可以很容易看到effective pom


构建生命周期

构建生命周期是一组阶段的序列(sequence of phases),每个阶段定义了目标被执行的顺序。这里的阶段是生命周期的一部分。
举例说明,一个典型的 Maven 构建生命周期是由以下几个阶段的序列组成的:

阶段 处理 描述
prepare-resources 资源拷贝 本阶段可以自定义需要拷贝的资源
compile 编译 本阶段完成源代码编译
package 打包 本阶段根据 pom.xml 中描述的打包配置创建 JAR / WAR 包
install 安装 本阶段在本地 / 远程仓库中安装工程包



当我们执行 mvn post-clean 命令时,Maven 调用 clean 生命周期,它包含以下阶段。
pre-clean
clean
post-clean
Maven 的 clean 目标(clean:clean)绑定到了 clean 生命周期的 clean 阶段。它的 clean:clean 目标通过删除构建目录删除了构建输出。所以当 mvn clean 命令执行时,Maven 删除了构建目录。


Default (or Build) 生命周期
这是 Maven 的主要生命周期,被用于构建应用。包括下面的 23 个阶段。
生命周期阶段 描述
validate 检查工程配置是否正确,完成构建过程的所有必要信息是否能够获取到。
initialize 初始化构建状态,例如设置属性。
generate-sources 生成编译阶段需要包含的任何源码文件。
process-sources 处理源代码,例如,过滤任何值(filter any value)。
generate-resources 生成工程包中需要包含的资源文件。
process-resources 拷贝和处理资源文件到目的目录中,为打包阶段做准备。
compile 编译工程源码。
process-classes 处理编译生成的文件,例如 Java Class 字节码的加强和优化。
generate-test-sources 生成编译阶段需要包含的任何测试源代码。
process-test-sources 处理测试源代码,例如,过滤任何值(filter any values)。
test-compile 编译测试源代码到测试目的目录。
process-test-classes 处理测试代码文件编译后生成的文件。
test 使用适当的单元测试框架(例如JUnit)运行测试。
prepare-package 在真正打包之前,为准备打包执行任何必要的操作。
package 获取编译后的代码,并按照可发布的格式进行打包,例如 JAR、WAR 或者 EAR 文件。
pre-integration-test 在集成测试执行之前,执行所需的操作。例如,设置所需的环境变量。
integration-test 处理和部署必须的工程包到集成测试能够运行的环境中。
post-integration-test 在集成测试被执行后执行必要的操作。例如,清理环境。
verify 运行检查操作来验证工程包是有效的,并满足质量要求。
install 安装工程包到本地仓库中,该仓库可以作为本地其他工程的依赖。
deploy 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程。

资源库

本地资源库:


Maven的本地资源库是用来存储所有项目的依赖关系(插件jar和其他文件,这些文件被Maven下载)到本地文件夹。


默认情况下,Maven的本地资源库默认为 .m2 目录文件夹:


Unix/Mac OS X – ~/.m2
Windows 7– C:\Users\{your-username}\.m2


可改变默认的 .m2 目录下的默认本地存储库文件夹到其他更有意义的名称,例如, maven-repo
找到 {M2_HOME}\conf\setting.xml, 更新 localRepository 到其它名称。


<settings><!-- localRepository
 
   | The path to the local repository maven will use to store artifacts.
 
   |
 
   | Default: ~/.m2/repository
 
  <localRepository>/path/to/local/repo</localRepository>
 
  --><localRepository>D:\inssoftware\apache-maven-3.5.3\repository</localRepository>








中央存储库:
Maven 中央存储库是 Maven 用来下载所有项目的依赖库的默认位置。


Archetype

Archetype是一个Maven项目模板工具包。通过Archetype我们可以快速搭建Maven项目。


常见的Archetype:


1.简单的maven工程骨架


maven-archetype-quickstart


maven-archetype-simple


2.简单的maven web工程骨架


maven-archetype-webapp


使用Archetype的一般步骤


1. 命令——mvn archetype:generate
2. 输入命令后,Archetype插件会输出一个Archetype列表供用户选择;选择自己想要使用的Archetype,输入对应编号
3. 提示输入一些基本参数,如groupId,artifactId,version,package等
4. Archetype插件生成项目骨架


创建Project and 常用命令

执行 mvn archetype:generate , 

会看到常常的输出,有很多可用的Archetype供选择;每一个Archetype前面都有一个对应的编号,同时命令行会提供一个默认的编号,其对应的Archetype为maven-archetype-quickstart,回车选择该Archetype

Maven 持续介绍与注意事项


紧接着Maven会提示输入要创建项目的groupId,artifactId,version及包名package:

除了这种交换模式之外, 还可以一开始就在命令行把参数设置好:

mvn archetype:generate -DgroupId={project-packaging} -DartifactId={project-name}-DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false


Maven 常用命令
1. mvn archetype:generate  , 创建Project, 上面介绍了, 下面也会介绍带参数的创建方式。
2. mvn compile ;  源码编译, 编译后的文件将放在项目根目录下的target目录中。(.class)
3. mvn test-compile ; 测试代码编译
4. mvn test ; 编译源码和测试源码进行测试
5. mvn package ; 项目打包
6. mvn install ; 安装jar包到Maven的本地仓库
7. mvn deploy; 安装当前项目到远程仓库
8. mvn clean ; 清除存放在临时文件的target目录

其他注意事项


1. archetype:create 这个命令在maven 3.02以上的版本已经不用了, 用generate 命令代替
2. 在使用mvn archetype:generate命令时,加上-DarchetypeCatalog=local,以替换网络上的catalog.xml
http://repo1.maven.org/maven2/archetype-catalog.xml
下载archetype-catalog.xml文件,放到本地的apache-maven目录中。
3. 关于资源文件
如果需要把一些资源文件也一并打包到jar包里面的话,需要在${basedir}/src/main下新建一个resources目录,然后把所有的资源文件都放到这个目录中,这样这些文件都会放到类路径下面。如果需要在测试代码中访问到对应的资源,那么相对的就需要在${basedir}/src/test下新建一个resources目录,然后把相应的资源文件放在这个目录下。

相关文章:

  • 2021-11-25
  • 2021-06-20
  • 2021-12-12
  • 2021-07-16
  • 2021-12-13
  • 2021-08-19
  • 2021-12-17
猜你喜欢
  • 2022-12-23
  • 2022-01-09
  • 2021-05-23
  • 2021-07-08
  • 2021-07-29
  • 2021-12-04
  • 2021-08-28
相关资源
相似解决方案