当前位置: 首页 > news >正文

厦门易尔通网站建设好吗网站开发的基本条件

厦门易尔通网站建设好吗,网站开发的基本条件,做局域网网站,wordpress用户插件文章目录1.前言2.模块的继承2.1.可继承的标签2.2.超级POM2.3.手动引入自定义父POM3.模块的聚合3.1.聚合的注意事项3.2.反应堆(reactor)4.依赖管理及属性配置4.1.依赖管理4.2.属性配置5.总结1.前言 本系列文章记录了 Maven 从0开始到实战的过程#xff0c;Maven 系列历史文章清… 文章目录1.前言2.模块的继承2.1.可继承的标签2.2.超级POM2.3.手动引入自定义父POM3.模块的聚合3.1.聚合的注意事项3.2.反应堆(reactor)4.依赖管理及属性配置4.1.依赖管理4.2.属性配置5.总结1.前言 本系列文章记录了 Maven 从0开始到实战的过程Maven 系列历史文章清单 一5分钟做完 Maven 的安装与配置 二使用 Maven 创建并运行项目、聊聊 POM 中的坐标与版本号的规则 三Maven仓库概念及私服安装与使用 附Nexus安装包下载地址 四图解Maven3依赖的功能特性依赖范围、依赖传递、依赖冲突 在前面4章的内容中我们已经知道了怎么从0开始搭建Maven环境、Maven仓库以及使用Maven来组织和构建简单的项目本篇会继续在这基础上扩展讲解Maven的继承与聚合的特性并通过这样的特性来组织构建多模块的项目。 本篇将会通过一个简单的多模块Demo项目来展开主要的内容包括 继承的概念与使用超级POM介绍模块聚合使用上的约定通过反应堆自定义模块是否构建与构建顺序 2.模块的继承 在Java中继承的作用往往是为了子类能够复用父类的某些特性、功能、方法等如果父级是抽象类还可以抽取子级中的功能特性如果父级是接口还可以在父级中定义一些规范例如抽象方法让每个子类都按照父级中的约定进行实现。 在Maven中模块间的继承与Java的继承是类似的可以将共性抽取到父 pom 中通过子 pom 继承父 pom 来复用配置和约束。 2.1.可继承的标签 可继承的标签太多了不一一例举这里就列一些我们在开发中常用的可继承的标签 groupId、version坐标分组和版本artifactId 不能继承。dependencies依赖配置denpendencyManagement依赖管理配置properties自定义属性类似于定义一个变量repositories仓库配置distributionManagement项目部署的仓库配置build插件、插件管理、源码输出位置等配置 2.2.超级POM 所有的 pom.xml 文件都会默认继承 super pom在 super pom 中定义了这么几个配置 构件与插件仓库的地址源码、测试代码以及资源文件resources的默认路径编译及打包后的文件路径 这也是为什么我们创建一个Maven项目之后只要在 Maven 约定好的路径中编写我们的代码其他的几乎什么都不用配置就可以直接进行构建也是一种约定优于配置的思想体现。 super pom 的位置在Maven主目录的lib文件夹下面找到一个叫maven-model-builder.jar 的文件在这个 jar 包的\org\apache\maven\model\pom-4.0.0.xml 路径下。如果使用的是idea的话直接双击 shift 输入 pom-4.0.0.xml 即可 projectmodelVersion4.0.0/modelVersionrepositoriesrepositoryidcentral/idnameCentral Repository/nameurlhttps://repo.maven.apache.org/maven2/urllayoutdefault/layoutsnapshotsenabledfalse/enabled/snapshots/repository/repositoriespluginRepositoriespluginRepositoryidcentral/idnameCentral Repository/nameurlhttps://repo.maven.apache.org/maven2/urllayoutdefault/layoutsnapshotsenabledfalse/enabled/snapshotsreleasesupdatePolicynever/updatePolicy/releases/pluginRepository/pluginRepositoriesbuilddirectory${project.basedir}/target/directoryoutputDirectory${project.build.directory}/classes/outputDirectoryfinalName${project.artifactId}-${project.version}/finalNametestOutputDirectory${project.build.directory}/test-classes/testOutputDirectorysourceDirectory${project.basedir}/src/main/java/sourceDirectoryscriptSourceDirectory${project.basedir}/src/main/scripts/scriptSourceDirectorytestSourceDirectory${project.basedir}/src/test/java/testSourceDirectoryresourcesresourcedirectory${project.basedir}/src/main/resources/directory/resource/resourcestestResourcestestResourcedirectory${project.basedir}/src/test/resources/directory/testResource/testResources /build /project2.3.手动引入自定义父POM 父 pom 的引入语法很简单在parent标签中添加构件坐标即可类似于dependency引入依赖 parentgroupId/groupIdartifactId/artifactIdversion/versionrelativePath/relativePath /parent这里的 relativePath 指的是父 pom.xml 所在的相对路径默认值是 ../pom.xml如下图 这也是 Maven 建议的目录组织形式如果想将 parent 与 child 放到同一级目录则需要修改为relativePath../parent/pom.xml/relativePath如下图 修改到其他目录同理同步修改相对路径即可但这里建议使用默认的目录组织形式。 在配置好relativePath子模块会优先从上级目录中查找pom.xml如果查不到则到本地仓库中查找如果还是查不到则会从远程仓库中查找我们经常使用的 SpringBoot 就是通过这种方式引入的 parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.1.6.RELEASE/version /parent3.模块的聚合 在上一篇 Maven 依赖中我们创建了一个拥有三个子模块的 Maven 项目 dependency-demo 在这个项目中demo-a 依赖 demo-b demo-b 依赖 demo-c , 在这种情况下我们需要先 install c 再 install b 最后再构建 a执行起来非常麻烦为了处理这个问题Maven 引入了聚合机制可以将这三个模块聚合在一起一次性完成构建。 3.1.聚合的注意事项 聚合的语法也非常简单只需要在父目录的 pom.xml 中添加 modules 即可 modulesmoduledemo-a/modulemoduledemo-b/modulemoduledemo-c/module /modules这里需要注意的是module 中填写的并不是 artifactId而是需要被聚合的模块的 文件目录 的相对路径注释里面的描述是 Each module listed is a relative path to the directory containing the module. 假如我们将 demo-a 的文件夹名称修改为 demo-aa即使artifactId没有变这里也需要填写为 modulesmoduledemo-aa/modulemoduledemo-b/modulemoduledemo-c/module /modules同理如果不是 parent 项目在聚合子模块而在a、b、c 同一级目录下新建一个聚合模块来做聚合则此处应该修改为。 modulesmodule../demo-a/modulemodule../demo-b/modulemodule../demo-c/module /modules综上一般情况下我们都将文件目录与 artifactId 保持一致同时也会直接在父 pom.xml 中聚合子模块这样的配置最简洁、最不容易出错这也是 Maven 中约定由于配置的体现。 3.2.反应堆(reactor) Maven 的反应堆是将多个模块的项目按照一定的顺序进行构建我们使用上面聚合的项目来做一次构建 mvn clean install注意上面的执行顺序先构建的是配置了聚合关系的聚合模块然后才是子模块子模块构建的时候会检查有没有依赖的模块如果有就先构建依赖的模块。所以这里按照被依赖的顺序由底层向上层进行构建。 因此我们的模块之间不能出现循环依赖的情况假如在demo-c中引入demo-a的依赖此时构建就会报错。 The projects in the reactor contain a cyclic reference: Edge between ‘Vertex{label‘com.ls.maven:demo-c:1.0.0’}’ and ‘Vertex{label‘com.ls.maven:demo-a:1.0.0’}’ introduc es to cycle in the graph com.ls.maven:demo-a:1.0.0 -- com.ls.maven:demo-b:1.0.0 -- com.ls.maven:demo-c:1.0.0 -- com.ls.maven:demo-a:1.0.0 在实际的开发中有时候我们的项目比较庞大如果每次都完整的进行构建耗时就会很长。此时我们可以在构建指令上加上一些参数以便于我们选择性的构建我们需要的项目通过mvn -h 查看。 usage: mvn [options] [goal(s)] [phase(s)]Options:-am,--also-make If project list is specified, alsobuild projects required by thelist-amd,--also-make-dependents If project list is specified, alsobuild projects that depend onprojects on the list-B,--batch-mode Run in non-interactive (batch)mode (disables output color)-b,--builder arg The id of the build strategy touse-C,--strict-checksums Fail the build if checksums dontmatch-c,--lax-checksums Warn if checksums dont match-cpu,--check-plugin-updates Ineffective, only kept forbackward compatibility-pl,--projects arg Comma-delimited list of specifiedreactor projects to build insteadof all projects. A project can bespecified by [groupId]:artifactIdor by its relative path 这里有特别多的参数我随便复制了一部分上面的-pl和-am是比较常用的参数意思是构建指定的项目以及它所依赖的项目。 pl指定构建某一个项目am构建项目的同时构建它依赖的项目 假如我想指定构建demo-b及其依赖的模块demo-c则可以用下面的指令 mvn clean install -pl demo-b -am4.依赖管理及属性配置 我们在做Java开发的时候往往会将一些常量公用的配置抽取到一个单独的文件中进行管理这样我们在修改这些配置的时候就有一个统一的入口而不需要在这个项目中到处去找。 Maven的配置也是一样的我们往往会把子模块中使用到的依赖以及版本号等抽取到父模块中由子模块直接继承。 4.1.依赖管理 以Mysql连接为例一般只有持久化相关的模块才会需要引入这个包。我们既要做到统一配置又要做到只有部分模块引入就可以在parent使用依赖管理dependencyManagement/ dependencyManagementdependenciesdependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.29/version/dependency/dependencies /dependencyManagement然后在需要使用到MySQL子模块中使用dependency进行引入这里就不需要填写版本号了 dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId /dependency4.2.属性配置 属性配置就类似于声明变量其语法为 properties声明的属性key声明的属性Value/声明的属性key /properties然后在其他的标签中可以使用${声明的属性key}这个语法来获取value的值于是上面的MySQL依赖就可以改为 propertiesmysql-connector-java.verison8.0.29/mysql-connector-java.verison /propertiesdependencyManagementdependenciesdependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion${mysql-connector-java.verison}/version/dependency/dependencies /dependencyManagement我们可以通过这种方式灵活的组织项目将需要经常修改的版本号放到属性配置中管理例如可以将demo-a 与 demo-b 中的依赖版本抽取到父pom中 groupIdcom.ls.maven/groupId artifactIddependency-demo/artifactId packagingpom/packaging version1.0.3/versionmodulesmoduledemo-a/modulemoduledemo-b/modulemoduledemo-c/module /modulesnamedependency-demo/namepropertiesdemo-dependency.verion1.0.3/demo-dependency.verion /propertiesdependencyManagementdependenciesdependencygroupIdcom.ls.maven/groupIdartifactIddemo-b/artifactIdversion${demo-dependency.verion}/version/dependencydependencygroupIdcom.ls.maven/groupIdartifactIddemo-c/artifactIdversion${demo-dependency.verion}/version/dependency/dependencies /dependencyManagement然后分别修改demo-a、demo-b 中的依赖 demo-a: parentartifactIddependency-demo/artifactIdgroupIdcom.ls.maven/groupIdversion1.0.2/version/parentmodelVersion4.0.0/modelVersionartifactIddemo-a/artifactIdnamedemo-a/namedependenciesdependencygroupIdcom.ls.maven/groupIdartifactIddemo-b/artifactId/dependency/dependenciesdemo-b:parentartifactIddependency-demo/artifactIdgroupIdcom.ls.maven/groupIdversion1.0.2/version /parent modelVersion4.0.0/modelVersionartifactIddemo-b/artifactIdnamedemo-b/namedependenciesdependencygroupIdcom.ls.maven/groupIdartifactIddemo-c/artifactId/dependency /dependencies后续开发的过程中统一修改版本号即可例如通过Idea的批量修改将1.0.2 修改 为 1.0.3然后尝试打包mvn clean install 5.总结 本篇主要讲述了Maven中的模块继承与聚合、父pom中的依赖管理、属性配置等的特性并通过一个简单的demo来演示这些特性总结一下 继承 super pom 是Maven最顶层的POM它的存在让我们几乎不能做任何配置就可以完成项目构建可以通过 parent标签让子模块的pom 继承 父模块的pom父模块的打包类型为 packagingpom/packaging注意relativePath指的的相对路径默认为../xml.pom 聚合 聚合的目的将多个模块聚合在一起一次性构建module中填写的是相对文件目录名而不是artifactId反应堆可以自动先构建依赖的模块但是要注意不能产生循环依赖如果只需要构建一部分模块可以使用构建指令裁剪反应堆 依赖管理与属性配置 dependencyManagement可以配置好需要继承的依赖坐标子模块继承后不需要再输入版本号properties可以配置变量并通过${}进行引用 通过本篇的内容就可以在实际的开发中搭建自己的多模块项目了Maven部分的内容就接近尾声了下一篇将会讲 Maven的插件配置。
http://www.dnsts.com.cn/news/26266.html

相关文章:

  • 创业做社交网站有哪些wordpress 清空浏览量
  • html5网站建设 教程拍摄制作公司宣传片
  • 2018年公司网站建设费分录网站备案关闭
  • 网站被降权会发生什么影响株洲专业seo优化
  • 网站开发前端学习闵行三中网站
  • 山西什么时候全面解封手机端seo
  • 惠州专业网站制作公司网络推销
  • 医疗器械网站制作凡科网首页
  • 网站seo分析html怎么做游戏
  • jsp开发网站开发源码个人网站如何进行网络推广
  • 给企业做网站app平台制作开发
  • 网站数据怎么更新流量网站
  • 中国建设银行湖南分行官网站开发软件的成本预算
  • 网站开发的前端到底是什么门户网站建设有哪些界面设计风格
  • 黄埔网站推广网址英文
  • 订单网站怎么做西安企业名录黄页
  • c 怎么做网站网站备案通过后
  • 南京维露斯网站建设建设网站的意义 作用是什么意思
  • 第一ppt网站官网公司装修预算表
  • vipsystem for wordpresswordpress菜单优化插件
  • 做网站要sql 数据库名字账号密码昆明学校网站建设
  • 厦门网站设计石家庄住房和城乡建设局官网
  • 如何做适合网站大小的图片it服务
  • 一站式媒体发稿平台电脑制作h5最常用软件
  • 五金加工东莞网站建设高端定制站开发
  • 网站编辑做啥都淮南发布网
  • 素马杭州网站设计介绍seo排名优化seo
  • 东莞住建局官网网站旅游电子商务网站建设规划
  • php网站带数据库网站源码下载了没有管理后台
  • 平面设计培训班哪里有宁波网站关键词优化排名