手机网站建设找哪家,寿光网站建设哪家好,南京网站设计网站,重庆荣昌网站建设价格一、Maven是什么
简单来说Maven是一个标准化的java管理和构建工具#xff0c;它提供了一系列规范#xff0c;包括项目结构#xff0c;构建流程#xff08;编译#xff0c;测试#xff0c;打包#xff0c;发布……#xff09;#xff0c;依赖管理等。
标准化就是定下…一、Maven是什么
简单来说Maven是一个标准化的java管理和构建工具它提供了一系列规范包括项目结构构建流程编译测试打包发布……依赖管理等。
标准化就是定下的规矩不能变该是什么结构就是什么结构该怎么构建就怎么构建。 二、Maven项目的标准项目结构 pom.xml项目描述文件maven项目管理的关键所在提供项目版本java版本管理模块管理依赖管理等关键信息src/main存放Java源码的目录src/main/resources:存放资源文件的目录src/test存放测试源码的目录target所有编译、打包生成的文件都放在target目录里 三、pom.xml文件结构分析
文件基本结构如图
project ...modelVersion4.0.0/modelVersiongroupIdcom.itranswarp.learnjava/groupIdartifactIdhello/artifactIdversion1.0/versionpackagingjar/packagingproperties.../propertiesdependenciesdependencygroupIdcommons-logging/groupIdartifactIdcommons-logging/artifactIdversion1.2/version/dependency/dependencies
/project其中
modelVersion指定POMProject Object Model结构版本这个版本规定好了能够在Maven项目配置文件中使用的结构和元素groupId类似于Java包名通常是公司或者组织名称artifactIdjava类名通常是项目名称version版本dependency项目的依赖包 引用其他第三方库时用groupIdartifactId, version确定这个库 三、依赖管理
Maven通过递归式的分析包的依赖关系不断导入依赖的包解决包的管理关系。
当我们声明了abc的依赖时Maven自动把abc和xyz都加入了我们的项目依赖不需要我们自己去研究abc是否需要依赖xyz。
因此Maven的第一个作用就是解决依赖管理。我们声明了自己的项目需要abcMaven会自动导入abc的jar包再判断出abc需要xyz又会自动导入xyz的jar包这样最终我们的项目会依赖abc和xyz两个jar包。 不同的依赖关系 dependence中的scope项目:
compile编译时需要用到的jar包默认test编译Test时需要用到该jar包runtime编译时不需要运行时需要如jdbcprovided编译时需要用到但运行时由某个jdk或服务器提供 Maven通过维护一个中央仓库的信息来维护依赖的下载信息所有第三方库将自身的jar及相关信息上传至中央仓库Maven就可以从中央仓库把依赖库下载到本地。一个jar包一旦被下载过就会被Maven自动缓存在本地目录。 如果我们要引用一个第三方组件比如okhttp如何确切地获得它的groupId、artifactId和version方法是通过search.maven.org搜索关键字找到对应的组件后直接复制 进入到pom.xml所在目录输入 $ mvn clean package 在target目录下获得自动打包的jar 四、模块管理
可以立即为Maven项目下分为多个不同的模块每个模块本质上就是一个独立的maven项目每个项目有独立的pom.xml.这也是大型软件降低复杂度的必要方法。
如果子模块的pom.xml存在多个相同的依赖可以在大项目下提取出一个pom.xml这样结构为 模块a可以简化为
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdcom.itranswarp.learnjava/groupIdartifactIdparent/artifactIdversion1.0/versionrelativePath../parent/pom.xml/relativePath/parentartifactIdmodule-a/artifactIdpackagingjar/packagingnamemodule-a/name
/project即使用parent继承parent的内容 如果模块A依赖模块B则模块A需要模块B的jar包才能正常编译我们需要在模块A中引入模块B ...dependenciesdependencygroupIdcom.itranswarp.learnjava/groupIdartifactIdmodule-b/artifactIdversion1.0/version/dependency/dependencies
编译时在根目录创建pom.xml统一编译同时添加modules模块表明下属模块
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.itranswarp.learnjava/groupIdartifactIdbuild/artifactIdversion1.0/versionpackagingpom/packagingnamebuild/namemodulesmoduleparent/modulemodulemodule-a/modulemodulemodule-b/modulemodulemodule-c/module/modules
/project