2026/6/10 1:25:53
网站建设
项目流程
网站开发图片放哪里,网站建设的客户需求分析调研表,网站qq访客抓取,小程序快速搭建生命周期Maven的生命周期是对所有的构建过程进行抽象和统一。Maven的生命周期是抽象的#xff0c;这意味着生命周期本身不做任何实际的工作#xff0c;生命周期只是定义了一系列的阶段#xff0c;并确定这些阶段的执行顺序。而在执行这些阶段时#xff0c;实际的工作还是由…生命周期Maven的生命周期是对所有的构建过程进行抽象和统一。Maven的生命周期是抽象的这意味着生命周期本身不做任何实际的工作生命周期只是定义了一系列的阶段并确定这些阶段的执行顺序。而在执行这些阶段时实际的工作还是由插件来完成的。这种思想与设计模式中的模板方法非常相似。Maven有三套相互独立的生命周期:Cleanclean生命周期的目的是清理项目Defaultdefault生命周期的目的是构建项目sitesite生命周期的目的是建立项目站点。完整生命周期用户在mvn命令后可以指定三个生命周期中的任何阶段则Maven会按以下逻辑执行首先会得到该阶段所属生命周期从该生命周期中的第一个阶段开始按顺序执行直至该阶段本身。例如执行mvn clean命令会依次执行clean生命周期中的pre-clean阶段及clean阶段。mvn命令后可以指定多个阶段Maven会按照输入的顺序依次执行每次执行都会按照之前描述的逻辑执行。之前提到实际的工作还是由插件来完成的这意味着插件需要和阶段绑定起来。Maven已经事先将很多核心插件绑定到对应的阶段这样用户几乎不用配置就有构建Maven项目。依赖传递和可选依赖应用场景:第一直接依赖: HelloFriend项目依赖Hello项目第二直接依赖: MakeFriend项目依赖HelloFriend项目如图所示 MakeFriend 项目只依赖了 HelloFriend但是也把Hello依赖进来了依赖范围对传递依赖的影响传递依赖是会受到依赖范围的影响的具体来看结果如下依赖阻断例如我们在HelloFriend项目里面的Hello依赖处添加该配置optionaltrue/optional表示 HelloFriend 被其他项目依赖时不传递 Hello 的依赖至依赖于 HelloFriend 的项目可选依赖如果我们需要在依赖中明确的排除掉某一依赖则可以使用exclusion属性排除掉引用的依赖Maven继承和聚合继承的意义继承就是避免重复maven的继承也是这样它还有一个好处就是让项目更加安全。比如我们在项目开发的过程中可能多个模块独立开发但是多个模块可能依赖相同的公共模块比如说每个模块都需要javaseo-utils在编译的时候maven-compiler-plugin插件也要被引入maven仓库地址以及发布目录都是相同的配置。我们可以使用Maven的继承功能把公共的配置信息写到父模块中子模块只要继承了该父模块也会继承父模块的配置信息。可继承的POM元素groupId 项目组 ID 项目坐标的核心元素version 项目版本项目坐标的核心元素description 项目的描述信息organization 项目的组织信息inceptionYear 项目的创始年份url 项目的 url 地址develoers 项目的开发者信息contributors 项目的贡献者信息distributionManagerment 项目的部署信息issueManagement 缺陷跟踪系统信息ciManagement 项目的持续继承信息scm 项目的版本控制信息mailingListserv 项目的邮件列表信息properties 自定义的 Maven 属性dependencies 项目的依赖配置dependencyManagement 醒目的依赖管理配置repositories 项目的仓库配置build 包括项目的源码目录配置、输出目录配置、插件配置、插件管理配置等reporting 包括项目的报告输出目录配置、报告插件配置等。父工程是MavenJava项目只作依赖管理src文件夹可以删掉打包方式是 pom 包创建子工程 hami_core是 MavenJava 项目创建子工程 hami_console是 MavenJavaWeb 项目出现 BUILD SUCCESS 即创建成功添加 java 和 resources 文件夹将其分别变为源码文件夹和资源文件夹以及修改 web.xml 配置文件如图按此模板创建 hami_portal 和 hami_file 子工程父工程的pom文件如图继承的依赖管理父类直接引用依赖如果在父类的dependencies内直接引用依赖则子类都会继承该依赖父类通过dependencyManagement管理依赖子类不会默认继承该依赖但是当子类使用该依赖时无需考虑版本信息直接继承父类dependencyManagement中设置的版本号(Version)聚合管理我们在平时的开发中项目往往会被划分为好几个模块比如common公共模块、system系统模块、log日志模块、reports统计模块、monitor监控模块等等。这时我们肯定会出现这么一个需要我们需要一次构件多个模块而不用每个模块都去mvn;以上面得父子项目为例当我们对parent进行mvn install时会对所有子项目均进行install操作通过 properties元素用户可以定义一个或多个 maven 属性然后在 maven 的其他地方使用 ${属性名称} 的方式引用该属性这种做法的意义在于消除重复和统一管理。比如需要在多个地方重复声明同样的 junit 版本现在只需要在一个地方声明就可以。