完整网站开发看什么书,破解wordpress,小程序后端怎么开发,wordpress 权重一 什么是maven
Maven本身也是Java写的#xff0c;他是一款服务于Java平台的自动化构建工具
Maven是一个项目管理工具#xff0c;旨在简化软件项目的构建、依赖管理和项目信息管理。它使用基于项目对象模型#xff08;Project Object Model#xff0c;POM#xff09;的…一 什么是maven
Maven本身也是Java写的他是一款服务于Java平台的自动化构建工具
Maven是一个项目管理工具旨在简化软件项目的构建、依赖管理和项目信息管理。它使用基于项目对象模型Project Object ModelPOM的概念来管理项目的构建和依赖并提供了一套规范的项目结构和标准的构建流程。
1 maven的作用
以下是 Maven 的主要作用
1. 项目构建Project Build: Maven 提供了一套标准的项目构建生命周期通过定义清晰的构建阶段如编译、测试、打包、部署等开发人员能够简单明了地配置和管理项目的构建过程。通过 Maven可以通过简单的命令完成项目的构建、测试和部署等操作。
2. 依赖管理Dependency Management: Maven 提供了统一的依赖管理机制可以轻松地管理项目所依赖的外部库和模块。通过在项目的配置文件pom.xml中声明依赖关系Maven可以自动下载并导入所需的依赖项并处理依赖冲突等问题。
3. 项目信息管理Project Information Management: Maven 使用项目对象模型POM来管理项目的核心信息包括项目组织结构、构建配置、发布信息等。通过良好的项目信息管理可以在团队开发中更好地协作并且有助于自动化构建和发布过程。
4. 标准化项目结构Standard Project Structure: Maven 鼓励使用一种标准化的项目结构这有助于开发者更容易地理解和维护项目代码同时也方便项目的构建和管理工具进行自动化处理。
5. 插件生态系统Plugin Ecosystem: Maven 的插件系统非常强大可以通过插件来扩展 Maven 的功能实现诸如代码质量检查、静态分析、文档生成等额外的任务从而提高项目的质量和开发效率。
总之Maven作为一种综合性的项目管理工具可以帮助开发团队提高项目的可维护性简化构建流程并提供一种规范的方式来管理项目的依赖和构建过程。通过 Maven开发团队可以更专注于项目开发本身而不必花费过多精力在构建和配置管理上。
2 maven项目的结构 pom文件定于了一个maven项目的maven配置一般pom文件的放在项目或者模块的根目录下。 maven的遵循约定大于配置约定了如下的目录结构 二 maven的xml文件中的结构 Maven项目的核心配置文件是pom.xml这是一个XML格式的文件其中包含了项目的配置信息、依赖管理、构建设置等。下面是一个详细介绍 Maven pom.xml 文件结构各个部分的概述
1. 项目基本信息Project Information -project整个pom配置文件的根元素所有的配置都是写在project元素里面的 - groupId: 定义项目组织或者公司的唯一标识符。 -modelVersion指定了当前POM模型的版本对于Maven2及Maven 3来说它只能是4.0.0 - artifactId: 定义构建产物的唯一标识符通常对应于生成的 JAR 文件名。 - version: 定义项目的版本号。 - packaging: 指定项目的打包方式例如 jar、war、pom 等。 - name: 项目的名称。 - description: 对项目的简要描述。 2. 父项目和parent元素 所有的pom都继承自一个父pomSuper POM。父pom包含了一些可以被继承的默认设置如果项目的pom中没有设置这些元素就会使用父pom中设置。例如Super POM中配置了默认仓库http://repo1.maven.org/maven2这样哪怕项目的pom中没有配置仓库也可以去这个默认仓库中去下载依赖。实际上maven pom文件约定大于配置的原则就是通过在Super POM中预定义了一些配置信息来实现的。 Maven使用effective pomSuper pom加上工程自己的配置来执行相关的目标它帮助开发者在pom.xml中做尽可能少的配置。当然这些配置也可以被重写。 parent元素可以指定父pom。用户可以通过增加parent元素来自定义一个父pom从而继承该pom的配置。parent元素中包含一些子元素用来定位父项目和父项目的pom文件位置。
parent用于指定父项目 groupIdparent的子元素父项目的groupId用于定位父项目 artifactIdparent的子元素父项目的artifactId用于定位父项目 versionparent的子元素父项目的version用于定位父项目 relativePathparent的子元素用于定位父项目pom文件的位置 3 项目构建需要的信息 (1) 路径管理
以上是 Maven pom.xml 文件中的一些常见结构及其说明这些配置项可以帮助开发团队有效地管理项目依赖、构建过程、资源管理等方面。根据实际项目需求可以灵活配置并使用这些结构来实现更高效的项目开发和构建管理。 路径管理定义了各种源码和编译结果的输出路径。如果遵循maven默认的路径约定这里的几个元素是不需要配置的。这些元素包括
sourceDirectory项目源码目录定义的是相对于pom文件的相对路径 testSourceDirectory项目单元测试源码目录定义的也是是相对于pom文件的相对路径 outputDirectory被编译过的应用程序class文件存放的目录也是是相对于pom文件的相对路径 testOutoutDIrectory被编译过的测试class文件存放的目录也是是相对于pom文件的相对路径 scriptSourceDirectory项目脚本源码目录也是是相对于pom文件的相对路径。由于脚本是解释性的语言所以该目录下的内容会直接被拷贝到输出目录而不需要编译。
2资源管理 这里的元素主要是对应用程序resource资源和单元测试部分resource资源的管理分别通过resource标签和testResource标签管理两种资源。两个标签元素可选的子元素都是一样的。子元素包括
targetPath描述了资源的目标输出路径该路径是相对于target/classes的路径filtering对文件中的参数值进行过滤需要被过滤的文件在filter中指定directory描述打包前的资源的存放路径这个路径是相对于pom文件所在目录的相对路径includes包含的模式列表例如**/*.xml。只有符合条件的资源文件才会在打包的时候被放入到输出路径中excludes排除的模式列表例如**/*.xml符合的资源文件不会在打包的时候会被过滤
3插件管理 插件管理相关的元素有两个包括pluginManagement和plugins。pluginManagement中有子元素plugins它和project下的直接子元素plugins的区别是pluginManagement主要是用来声明子项目可以引用的默认插件信息这些插件如果只写在pluginManagement中是不会被引入的。project下的直接子元素plugins中定义的才是这个项目中真正需要被引入的插件 4构建扩展
extensions是在此构建中使用的项目的列表它们将被包含在运行构建的classpath中。这些项目可以启用对构建过程的扩展并使活动的插件能够对构建生命周期进行更改。简而言之扩展是在构建期间激活的artifacts。扩展不需要实际执行任何操作也不包含 Mojo。因此扩展对于指定普通插件接口的多个实现中的一个是非常好的。 5 其他配置
build中还有一些配置如下
4 项目依赖相关信息 pom文件中通过dependencyManagement来声明依赖通过dependencies元素来管理依赖。dependencyManagement下的子元素只有一个直接的子元素dependencice其配置和dependencies子元素是完全一致的而dependencies下只有一类直接的子元素dependency。一个dependency子元素表示一个依赖项目。
!--该元素描述了项目相关的所有依赖。 这些依赖自动从项目定义的仓库中下载 -- 这里也是根据元素的作用简单的对dependency的子元素做了一下分类。下面按分类来看一下dependency的子元素
1、依赖坐标 依然是通过groupId artifactId version来在仓库中定位一个项目
groupIdparent的子元素父项目的groupId用于定位父项目 artifactIdparent的子元素父项目的artifactId用于定位父项目 versionparent的子元素父项目的version用于定位父项目 2、依赖类型 这个分类主要包括两个元素分别是依赖类型和依赖的分类器。同一个项目即使打包成同一种类型也可以有多个文件同时存在因为它们的分类器可能是不同的。
type依赖类型默认是jar。通常表示依赖文件的扩展名但也有例外。一个类型可以被映射成另外一个扩展名或分类器。类型经常和使用的打包方式对应尽管这也有例外一些类型的例子jarwarejb-client和test-jar。如果设置extensions为true就可以在plugin里定义新的类型。 classifier依赖的分类器。分类器可以区分属于同一个POM但不同构建方式的构件。分类器名被附加到文件名的版本号后面如果想将项目构建成两个单独的JAR分别使用Java 4和6编译器就可以使用分类器来生成两个单独的JAR构件 3、依赖传递 依赖传递相关的子元素主要有两个用于依赖排除的exclusions和设置依赖是否可选的optional。
exclusions排除该项目中的一些依赖即本项目A依赖该dependency指示的项目B但是不依赖项目B中依赖的这些依赖 optional可选依赖用于阻断依赖的传递性即本项目不会依赖父项目中optional设置为true的依赖。 4、依赖范围 还有一些其他元素
scope依赖范围。在项目发布过程中帮助决定哪些构件被包括进来 - compile默认范围用于编译; - provided类似于编译但支持jdk或者容器提供类似于classpath - runtime: 在执行时需要使用; - systemPath: 仅用于范围为system提供相应的路径 - test: 用于test任务时使用; - system: 需要外在提供相应的元素通过systemPath来取得 - optional: 当项目自身被依赖时标注依赖是否传递。用于连续依赖时使用
systemPath该元素为依赖规定了文件系统上的绝对路径。仅在scope设置成system时才会使用。不推荐使用这个元素。不推荐使用绝对路径如果必须要用推荐使用属性匹配绝对路径例如${java.home} 5 生成文档相关的元素 备注maven可以通过mvn site命令生成项目的相关文档。 和生成文档相关的元素包括nameurl和description。
name项目名称maven生成文档会使用项目名url项目主页的地址maven生成文档的时候使用。description项目描述。如果可以使用HTML格式进行描述的时候不推荐使用纯文本的描述。
6 远程仓库列表 远程仓库列表的配置包括依赖和扩展的远程仓库配置以及插件的远程仓库配置。在本地仓库找不到的情况下maven下载依赖、扩展和插件就是从这里配置的远程仓库中进行下载。 需要注意的是release和snapshot两者的区别。release是稳定版本一经发布不再修改想发布修改后的项目只能升级项目版本再进行发布snapshot是不稳定的一个snapshot的版本可以不断改变。项目在开发期间一般会使用snapshot更方便进行频繁的代码更新一旦发布到外部或者开发基本完成代码迭代不再频繁则推荐使用release。 7项目分发信息相关元素 项目分发信息的相关配置在distributionManagement中设置。设置的内容包括
repository和snapshotRepository项目产生的构建/快照构建部署的远程仓库。如果不配置snapshotRepository快照也会部署到repository中site部署项目的网站需要的信息downloadUrl项目下载页面的URL这是为不在仓库中的构建提供的relocation如果构件有了新的group ID和artifact ID移到了新的位置这里列出构件的新的信息status给出该构件在远程仓库的状态本地项目中不能设置该元素这是工具自动更新的。 8 报表规范
报表规范描述的是使用mvn site命令时使用的一些配置。 9 profile配置 !--在列的项目构建profile如果被激活会修改构建处理 -- profiles !--根据环境参数或命令行参数激活某个构建处理 -- profile !--构建配置的唯一标识符。即用于命令行激活也用于在继承时合并具有相同标识符的profile。 -- id / !--自动触发profile的条件逻辑。Activation是profile的开启钥匙profile的力量来自于它 -- !-- 能够在某些特定的环境中自动使用某些特定的值这些环境通过activation元素指定。activation元素并不是激活profile的唯一方式 -- activation !--profile默认是否激活的标志 -- activeByDefault / !--当匹配的jdk被检测到profile被激活。例如1.4激活JDK1.41.4.0_2而!1.4激活所有版本不是以1.4开头的JDK -- jdk / !--当匹配的操作系统属性被检测到profile被激活。os元素可以定义一些操作系统相关的属性。 -- os !--激活profile的操作系统的名字 -- nameWindows XP/name !--激活profile的操作系统所属家族(如 windows) -- familyWindows/family !--激活profile的操作系统体系结构 -- archx86/arch !--激活profile的操作系统版本 -- version5.1.2600/version /os !--如果Maven检测到某一个属性其值可以在POM中通过${名称}引用其拥有对应的名称和值Profile就会被激活 -- !--如果值字段是空的那么存在属性名称字段就会激活profile否则按区分大小写方式匹配属性值字段 -- property !--激活profile的属性的名称 -- namemavenVersion/name !--激活profile的属性的值 -- value2.0.3/value /property !--提供一个文件名通过检测该文件的存在或不存在来激活profile。missing检查文件是否存在如果不存在则激活profile -- !--另一方面exists则会检查文件是否存在如果存在则激活profile -- file !--如果指定的文件存在则激活profile。 -- exists/usr/local/abcd/abcd-home/jobs/maven-guide-zh-to-production/workspace/ /exists !--如果指定的文件不存在则激活profile。 -- missing/usr/local/abcd/abcd-home/jobs/maven-guide-zh-to-production/workspace/ /missing /file /activation !--构建项目所需要的信息。参见build元素 -- build / !--发现依赖和扩展的远程仓库列表。详情参见repositories元素 -- repositories / !--发现插件的远程仓库列表这些插件用于构建和报表。详情参见pluginRepositories元素 -- pluginRepositories / !--该元素描述了项目相关的所有依赖。 详细配置参见dependencies -- dependencies / !--该元素包括使用报表插件产生报表的规范。当用户执行mvn site这些报表就会运行。在页面导航栏能看到所有报表的链接。参见reporting元素 -- reporting / !--参见dependencyManagement元素 -- dependencyManagement / !--参见distributionManagement元素 -- distributionManagement / !--不赞成使用. 现在Maven忽略该元素. -- reports / !--模块有时称作子项目 被构建成项目的一部分。列出的每个模块元素是指向该模块的目录的相对路径 -- modules / !--参见properties元素 -- properties / /profile /profiles 10 邮件列表和持续集成配置 !--项目持续集成信息 -- ciManagement !--持续集成系统的名字例如continuum -- system / !--该项目使用的持续集成系统的URL如果持续集成系统有web接口的话。 -- url / !--构建完成时需要通知的开发者/用户的配置项。包括被通知者信息和通知条件错误失败成功警告 -- notifiers !--配置一种方式当构建中断时以该方式通知用户/开发者 -- notifier !--传送通知的途径 -- type / !--发生错误时是否通知 -- sendOnError / !--构建失败时是否通知 -- sendOnFailure / !--构建成功时是否通知 -- sendOnSuccess / !--发生警告时是否通知 -- sendOnWarning / !--不赞成使用。通知发送到哪里 -- address / !--扩展配置项 -- configuration / /notifier /notifiers /ciManagement !--项目相关邮件列表信息 -- mailingLists !--该元素描述了项目相关的所有邮件列表。自动产生的网站引用这些信息。 -- mailingList !--邮件的名称 -- nameDemo/name !--发送邮件的地址或链接如果是邮件地址创建文档时mailto: 链接会被自动创建 -- postnanxs123.com/post !--订阅邮件的地址或链接如果是邮件地址创建文档时mailto: 链接会被自动创建 -- subscribenanxs123.com/subscribe !--取消订阅邮件的地址或链接如果是邮件地址创建文档时mailto: 链接会被自动创建 -- unsubscribenanxs123.com/unsubscribe !--你可以浏览邮件信息的URL -- archivehttp:/a.b.c/nanxs/demo/dev//archive /mailingList /mailingLists 11 项目的描述性信息 !--项目的问题管理系统(Bugzilla, Jira, Scarab,或任何你喜欢的问题管理系统)的名称和URL -- issueManagement !--问题管理系统例如jira的名字 -- systemjira/system !--该项目使用的问题管理系统的URL -- urlhttp://jira.baidu.com/nanxs/url /issueManagement !--项目创建年份4位数字。当产生版权信息时需要使用这个值。 -- inceptionYear / !--项目开发者列表 -- developers !--某个项目开发者的信息 -- developer !--SCM里项目开发者的唯一标识符 -- idHELLO WORLD/id !--项目开发者的全名 -- namenanxs/name !--项目开发者的email -- email123abc.com/email !--项目开发者的主页的URL -- url / !--项目开发者在项目中扮演的角色角色元素描述了各种角色 -- roles roleProject Manager/role roleArchitect/role /roles !--项目开发者所属组织 -- organizationdemo/organization !--项目开发者所属组织的URL -- organizationUrlhttp://a.b.com/nanxs/organizationUrl !--项目开发者属性如即时消息如何处理等 -- properties deptNo/dept /properties !--项目开发者所在时区 -11到12范围内的整数。 -- timezone-5/timezone /developer /developers !--项目的其他贡献者列表 -- contributors !--项目的其他贡献者。参见developers/developer元素 -- contributor name / email / url / organization / organizationUrl / roles / timezone / properties / /contributor /contributors !--该元素描述了项目所有License列表。 应该只列出该项目的license列表不要列出依赖项目的license列表 -- !--如果列出多个license用户可以选择它们中的一个而不是接受所有license -- licenses !--描述了项目的license用于生成项目的web站点的license页面其他一些报表和validation也会用到该元素。 -- license !--license用于法律上的名称 -- nameApache 2/name !--官方的license正文页面的URL -- urlhttp://a.b.com/nanxs/LICENSE-1.0.txt/url !--项目分发的主要方式 repo可以从Maven库下载 manual 用户必须手动下载和安装依赖 -- distributionrepo/distribution !--关于license的补充信息 -- commentsA business-friendly OSS license/comments /license /licenses !--SCM(Source Control Management)标签允许你配置你的代码库供Maven web站点和其它插件使用。 -- scm !--SCM的URL,该URL描述了版本库和如何连接到版本库。该连接只读 -- connectionscm:svn:http://a.b.com/nanxs/connection !--给开发者使用的类似connection元素。即该连接不仅仅只读 -- developerConnectionscm:svn:http://a.b.com/nanxs/developerConnection !--当前代码的标签在开发阶段默认为HEAD -- tag / !--指向项目的可浏览SCM库例如ViewVC或者Fisheye的URL。 -- urlhttp://a.b.com/nanxs/url /scm !--描述项目所属组织的各种属性。Maven产生的文档用 -- organization !--组织的全名 -- namedemo/name !--组织主页的URL -- urlhttp://a.b.com/nanxs/url /organization
12 其他配置 参考文档
【精选】maven之pom文件详解_maven pom文件详解_凌晨的路灯的博客-CSDN博客