设为首页 收藏本站
查看: 1051|回复: 0

[经验分享] 7天学会Maven(第一天——了解 Maven)

[复制链接]

尚未签到

发表于 2017-2-28 12:09:50 | 显示全部楼层 |阅读模式
什么是 Maven?(摘自百度百科)
  Maven是Apache的一个顶级的项目:http://maven.apache.org/
  Maven这个单词来自于意第绪语,意为知识的积累,最早在Jakata Turbine项目中它被用来简化项目的构建过程。当时有很多项目,它们的Ant build文件仅有细微的差别,而JAR文件都由CVS来维护。于是Maven创始者开始了Maven这个项目,该项目的清晰定义包括,一种很方便的发布项目信息的方式,以及一种在多个项目中共享JAR的方式。
  Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后 Maven 可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
  Maven 包含一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。
  此外,Maven能够很方便的帮你管理项目报告,生成站点,管理JAR文件,等等。
Maven 能够帮助我们干什么?
  简言之,Maven 可以帮助我们完成以下工作:

  • 项目构建
  • 文档管理
  • 生成测试报告
  • 解决项目间依赖项
  • 源代码版本管理
  • 项目Releases
  • 项目的分发
Maven 关键词

  • Project:

    • 任何你想 build 的事物,Maven都会把它们当作是一个 Project。
    • 这些 Project 被定义为 POM(Project Object Model)。
    • 一个 Project 可以依赖其他的project,一个 project 也可以有多个子project组成。

  • POM:

    • POM(pom.xml) 是 Maven 的核心文件,它是指示 Maven 如何工作的元数据文件,类似 ant 的 build.xml 文件。
    • pom.xml 文件应该位于每个 Project 的根目录。

  • GroupId:

    • 顾名思义,这个应该是公司名或组织名。

  • ArtifactId:

    • 构建出来的文件名,一般来说或,这个也是project名。

  • Packaging:

    • 项目打包的类型,可以是将jar、war、rar、ear、pom,默认是jar。

  • Version:

    • 项目的版本,项目的唯一标识由 groupId+artifactId+packaging+versionz 组成。

  • Dependency:

    • 为了能够 build 或运行,一个典型的java project会依赖其他的包,在Maven中,这些被依赖的包就被称为 dependency。

  • Plug-in:

    • Maven是有插件组织的,它的每一个功能都是由插件提供的,主要的插件是由 java 来写的,但是他也支持 beanshell 和 ant 脚本编写的插件。

  • Repository:

    • 仓库用来存放artifact的,可以是本地仓库,也可以是远程仓库,Maven是由一个默认的仓库

  • Snapshot:

    • 工程中可以(也应该)有这样一个特殊的版本:这个版本可以告诉Maven,该工程正在处于开发阶段,会经常更新(但还为发布)。当其他工程依赖此类型的artifact时,Maven会在仓库中寻找该artifact的最新版本,并自动下载、使用该最新版本。

Maven 常见命令
DSC0000.gif

mvn archetype:create创建Maven项目
mvn compile编译源代码
mvn test运行应用程序中的单元测试
mvn install在本地Respository中安装jar
mvn eclipse:eclipse生成eclipse项目文件
mvn jetty:run启动jetty服务
mvn clean清除项目目录中的生成结果
mvn site生成项目相关信息的网站
mvn package根据项目生成的jar
Maven的默认生命周期
DSC0001.png

Default Lifecycle生命周期阶段描述
validate验证确保当前配置和 POM 的内容是有效的。这包含对 pom.xml 文件树的验证。
initialize初始化在执行构建生命周期的主任务之前可以进行初始化。
generate-sources生成源码代码生成器可以开始生成在以后阶段中处理或编译的源代码。
process-sources处理源码提供解析、修改和转换源码。常规源码和生成的源码都可以在这里处理。
generate-resources生成资源可以生成非源码资源。通常包括元数据文件和配置文件。
process-resources处理资源处理非源码资源。修改、转换和重定位资源都能在这阶段发生。
compile编译编译源码。编译过的类被放到目标目录树中。
process-classes处理类处理类文件转换和增强步骤。字节码交织器和常用工具常在这一阶段操作。
generate-test-sources生成测试源码mojo 可以生成要操作的单元测试代码。
process-test-sources处理测试源码在编译前对测试源码执行任何必要的处理。在这一阶段,可以修改、转换或复制源代码。
generate-test-resources生成测试资源  允许生成与测试相关的(非源码)资源。
process-test-resources处理测试资源可以处理、转换和重新定位与测试相关的资源。
test-compile测试编译编译单元测试的源码。
process-test-classes
对测试编译生成的文件做后期处理(需Maven2.0.5及以上)
test测试运行编译过的单元测试并累计结果。
prepare-package
执行打包前的所有操作(需Maven2.1及以上)
package打包将可执行的二进制文件打包到一个分布式归档文件中,如 JAR 或 WAR。
pre-integration-test前集成测试准备集成测试。这种情况下的集成测试是指在一个受到一定控制的模拟的真
实部署环境中测试代码。这一步能将归档文件部署到一个服务器上执行。
integration-test集成测试执行真正的集成测试。
post-integration-test后集成测试解除集成测试准备。这一步涉及测试环境重置或重新初始化。
verify检验检验可部署归档的有效性和完整性。过了这个阶段,将安装该归档。
install安装将该归档添加到本地 Maven 目录。这一步让其他可能依赖该归档的模块可以使用它。
deploy部署  将该归档添加到远程 Maven 目录。这一步让这个工件能为更多的人所用。
在 Eclipse中 使用 Maven
  Eclipse的Maven插件m2eclipse:http://www.sonatype.org/m2eclipse/

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-348443-1-1.html 上篇帖子: android 近百个源码项目 下篇帖子: maven的生命周期和插件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表