草庐IT

【Maven】你好,Maven >>> 与Maven的初次见面~

.29. 2023-04-05 原文

个人主页:.29.的博客
学习社区:进去逛一逛~
个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的道路上摸爬滚打,记录学习的过程~

与Maven的初次见面~


一、了解Maven

Apache Maven是一个软件项目管理和综合工具,是 Apache 下的一个纯 Java 开发的开源项目,基于项目对象模型(POM)的概念,Maven可以从一个中心信息块管理项目的构建、报告和文档等操作。

Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。

Maven 也可被用于构建和管理各种项目,例如 C#,Ruby,Scala 和其他语言编写的项目。Maven 曾是 Jakarta 项目的子项目,现为由 Apache 软件基金会主持的独立 Apache 项目。


二、Maven的构建与依赖

Maven能够帮助我们完成地事情如下:

  • 构建
  • 文档生成
  • 报告
  • 依赖
  • SCMs
  • 发布
  • 分发
  • 邮件列表

上述功能中,我们具体去了解一下 构建依赖

⚪构建

构建过程包含的主要环节有:

  • 清理:删除上一次构建的结果,从而准备下一次的构建。

  • 编译:Java源程序编译成 *. class字节码文件。

  • 测试:运行提前准备好的测试程序。

  • 报告:针对刚才测试的结果生成一个全面的信息。

  • 打包:
            - Java工程: jar包。
            - Web工程: war包。

  • 安装:把一个Maven工程经过打包操作生成的 jar包或 war包存入Maven仓库。

  • 部署:
            - 部署 jar包:把 jar包部署到Nexus私服服务器上。
            - 部署 war包:借助相关的Maven插件,将 war包部署到Tomcat服务器上。


⚪依赖

概念
如果工程A中使用到了工程B中的类、接口配置文件等资源,那么我们就可以说A依赖B,简单来讲就是jar包与jar包之间的相互依赖。

依赖管理中需要完成的事情

  • jar 包的下载:使用Maven以后, jar包会从规范的远程仓库下载带本地。
  • jar 包间的依赖:通过依赖的传递性自动完成。
  • jar 包间的冲突:通过对依赖的配置进行调整,让某些 jar包不会被导入。

三、Maven的功能与特性

  • 遵循统一的项目设置 - 在几秒钟内启动一个新项目或模块

  • 在所有项目中共享 - 新开发人员进入项目无须启动时间

  • 依赖管理,包括自动更新、依赖关系闭包(也称为传递依赖关系)

  • 能够同时轻松处理多个项目

  • 一个庞大且不断增长的库和元数据存储库,开箱即用,并与最大的开源项目达成安排,以实时提供其最新版本

  • 可扩展,能够轻松地用Java或脚本语言编写插件

  • 即时访问新功能,只需很少或无需额外配置

  • 用于在 Maven 外部进行依赖管理和部署的 Ant 任务

  • 基于模型的构建:Maven能够将任意数量的项目构建为预定义的输出类型,例如JAR,WAR或基于项目元数据的分发,在大多数情况下无需执行任何脚本。

  • 项目信息的连贯站点:使用与构建过程相同的元数据,Maven能够生成一个网站或PDF,包括您想要添加的任何文档,并将有关项目开发状态的标准报告添加到该标准报告中。此信息的示例可以在本网站左侧导航底部的“项目信息”和“项目报告”子菜单下看到。

  • 发布管理和分发发布:无需太多额外的配置,Maven 将与您的源代码管理系统(例如 Subversion 或 Git)集成,并根据某个标签管理项目的发布。它还可以将其发布到分发位置以供其他项目使用。Maven 能够发布单个输出,例如 JAR、包含其他依赖项和文档的存档,或作为源代码分发。

  • 依赖关系管理:Maven鼓励使用JAR和其他依赖关系的中央存储库。Maven 带有一种机制,项目的客户端可以使用该机制从中央 JAR 存储库下载构建项目所需的任何 JAR,就像 Perl 的 CPAN 一样。这允许Maven的用户跨项目重用JAR,并鼓励项目之间的通信,以确保处理向后兼容性问题。


给大家赖一个 ~

<dependencies>
    <!-- 添加外部依赖 -->
    <dependency>
        <groupId>...</groupId>        <!-- 可自定义 -->
        <artifactId>...</artifactId>  <!--可自定义-->
        <version>...</version>        <!--版本号-->
        <scope>...</scope>            <!--作用域-->
        <systemPath>${basedir}\src\lib\...</systemPath> <!--依赖目录-->
    </dependency> 
</dependencies>

有关【Maven】你好,Maven >>> 与Maven的初次见面~的更多相关文章

  1. ruby - 在 Maven 集成中运行 Ruby 单元测试 - 2

    有没有人有在Maven中运行用Ruby编写的单元测试的经验。任何输入,如要使用的库/maven插件,将不胜感激!我们已经在使用Maven+hudson+Junit。但是我们正在引入Ruby单元测试,找不到任何同样好的组合。 最佳答案 我建议让Maven使用ExecMavenPlugin启动rake测试(exec:exec目标)并使用ci_reportergem生成单元测试结果的XML文件,Hudson、Bamboo等可以读取该文件,以与JUnit测试相同的格式显示测试结果。如果您不需要使用mvntest运行Ruby测试,您也可以只使

  2. [ERROR] Error executing Maven. - 2

    [ERROR]ErrorexecutingMaven.报错如下:[ERROR]中的关键提示信息:错误分析:解决:报错如下:错误代码提示:[ERROR]ErrorexecutingMaven.[ERROR]2problemswereencounteredwhilebuildingtheeffectivesettings[FATAL]Non-parseablesettingsD:\apache-maven-3.6.2&repository\apache-maven-3.6.2\conf\settings.xml:entityreferencenamecannotcontaincharacter\'

  3. 无法创建Maven项目:'.../pom.xml'已经存在于VFS(Intellij)中 - 2

    当我想重新创建一个名称但已经删除的Maven项目时,我会收到以下错误消息:无法创建Maven项目:'.../pom.xml'已经存在于VFS中看答案看清洁系统缓存页。在IntellijIdea中打开任何项目选择“文件&gt;无效缓存/重新启动...”单击“无效并重新启动”警告清理系统缓存,请记住:它导致清除当地历史。为避免丢失数据,请在使缓存无效之前检查版本控制系统的更改。导致对当前版本的IntellijIdea中运行的所有项目的完整重建。

  4. javascript - 如何 : Maven project to build JavaScript in Eclipse - 2

    如何配置我的pom以将文件夹用作JavaScript构建路径?我想让开发人员将项目导入到eclipse中,并在eclipse构建路径中自动拥有JavaScript根文件夹,以便自动完成和其他JavaScript支持工作。 最佳答案 这是我所做的,它似乎工作正常。我现在正在使用EclipseJunoSR2(面向Web开发人员的JavaEE)和Maven3.0.5。(我不是Eclipse或Maven方面的专家,所以我确信有一种更优雅的方法可以做到这一点。请告诉我!)根据Maven约定,我们希望拥有如下所示的项目结构:-src+--mai

  5. javascript - 如何在不需要运行浏览器或服务器的情况下在 Maven 中运行 javascript 单元测试? - 2

    我致力于开发包含javascript的网络内容,在某种程度上,它包含比动画和移动值更多的逻辑。我想为这种逻辑实现一些单元测试。我想找到一些方法用javascript编写这些测试,并在我用maven构建web项目时让它们运行。因为我要测试的代码处理方法或对象中包含的逻辑内容,所以我觉得我不应该让服务器运行。另外,我读过Rhino之类的东西,这让我觉得应该没有必要让浏览器从某处开始只是为了执行javascript。我并不是特别关心浏览器的差异——我很少发现我在该领域遇到问题,而且当我遇到问题时,总是与样式或罕见的DOM问题有关。我想测试一下我能否将1加1最后得到2。我在谷歌上搜索了一些,发

  6. java - 最佳实践 : how to host server-side code in the maven repository - 2

    将javascript/html/css代码放入maven存储库的最佳方式是什么,以便java项目可以轻松使用。有没有办法让包含的项目可以很容易地通过包含项目“网络可见”?例如,假设我编写了一个非常有用的tricks.js文件并将其放入mvn存储库中。是否可以创建一个将tricks.js添加为依赖项然后执行的Web项目导致提供tricks.js文件? 最佳答案 外部资源应该打包成工件并发布到存储库(为简单起见,使用jar工件,但您可以指定一个assembly来打包一个zip,而不是明确工件的用途)。maven-dependency-

  7. maven - 2

    #maven1.maven基础 Maven是apache提供的一个项目管理工具,它的作用就是管理项目2.maven作用 1).依赖管理[方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题] 1.依赖denpendency依赖(坐标):一个jar包groupId公司域名倒写artifactId项目名version 版本号坐标:Maven中的坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置。 使用坐标来定义项目或引入项目中需要的依赖。2.仓库种类 本地仓库:自己计算机上的一个目录 远程仓库(私服):一般由公司团队搭建的私有仓库 中央仓库:由Maven团队维护的全球唯一的3.ja

  8. javascript - 通过 Maven 安装 NodeJS - 2

    我看到许多用于JavaScript的较新Maven插件需要在进行构建的机器(本地和CI服务器)上安装NodeJS。例如:yeoman-maven-plugin、npm-maven-plugin等问题是:检查NodeJS是否存在并在缺少时通过Maven作为依赖安装它是否有意义?奖励问题:如果您认为这是个好主意,您将如何完成这项任务? 最佳答案 你可以试试frontend-maven-plugin(通过https://stackoverflow.com/a/19600777/1024571)。根据文档:Thisplugindownloa

  9. javascript - 用于静态 Web 项目的 Maven - 2

    我想为包含图像、javascript和/或css文件的静态Web项目使用Maven功能。我不想考虑任何关于Java、jar打包......基本上,我需要:“缩小”资源:即:一些yui压缩器插件打包我的项目(.tar.gz,...)通过查找,我刚刚找到了一些标签示例。但是,与整个项目无关。装配tar.gz,我相信Assembly插件可能会有用。为了缩小和压缩JS和CSS,我声明了一些压缩/缩小插件。在这种情况下,我应该如何申报包装标签?我越想越接近:war.还有其他方式声明吗?有道理吗? 最佳答案 如果您的程序集描述符完成所有数据处理

  10. javascript - 如何让 maven jetty 插件知道额外的 web 目录? - 2

    我想使用src/main/javascript作为我的javascript文件的源目录,同时仍然将src/main/webapp用于大多数其他Web文件,但是mavenjetty:run插件默认情况下不知道这个目录。以下是我到目前为止所获得的,但它似乎没有让Jetty知道我的javascript目录:org.mortbay.jettymaven-jetty-plugin6.1.12/${project.artifactId}target/classes/:src/main/javascriptsrc/main/webappsrc/main/javascript如何让mavenjetty

随机推荐