Maven配置文件详解

合集下载

Maven配置说明

Maven配置说明

Maven插件安装步骤一、配置环境变量1、解压apache-maven-3.0.5-bin.gz包到D盘,解压完成后目录D盘会出现如下文件夹apache-maven-3.0.5,完整目录为D:\ apache-maven-3.0.5,如下图所示:2、配置maven 环境变量:系统变量:MAVEN_HOME = D:\apache-maven-3.0.5用户变量:path = %MAVEN_HOME%\bin3、打开cmd,在里面敲:mvn –version会出现Maven的版本信息,这时说明Maven环境变量配置成功了!二、安装Eclipse插件1、修改maven 仓库本地存放位置:在你的 E 盘位置建立这样一个文件夹路径E:\maven\repository 然后配置D:\apache-maven-3.0.5\conf\settings.xml 下的settings.xml 文件,配置(修改54行位置):<localRepository>E:\maven\repository</localRepository>指向刚才所建文件夹目录,如下图所示2、配置完成后在cmd 中敲并回车执行:mvn help:system这时Maven会从远程仓库下载一些的东西,不用管,执行完成后,在刚才所建的文件夹目录会出现以下文件,如下图所示:3、将Eclipse插件包解压,打开Eclipse安装目录,将插件文件夹下的文件放到Eclipse下对应文件夹下(注意:两个目录的文件夹名称是一致的,只拷贝下面的文件即可),好了之后,重启Eclipse,然后在Window --> Preferences目录下就可以看到Maven选项了4、配置maven点击Add 按钮,选到你本机安装maven 的路径值5、 点击 Browse 按钮,选到你 maven 的 setting.xml 配置文件,然后点击 OK ,这样就完成了 eclipse maven 插件的配置6、通过上述步骤,Maven基本上就算搞定了。

【Maven】配置文件详解

【Maven】配置文件详解

【Maven】配置⽂件详解概述参考本⽂讲解Maven的配置⽂件及其命令的使⽤。

Maven及其项⽬⽬录结构Maven⽬录结构Maven⼯程⽬录结构其中pom指project object model (项⽬对象模型) 或者 package object management (依赖包对象管理器)配置⽂件Maven常⽤的核⼼配置⽂件包括全局配置⽂件settings.xml和项⽬配置⽂件pom.xml,还有不常⽤的⽤户配置⽂件settings.xmlnote 如果在上述三个配置⽂件中出现相同配置,则优先级如下:pom.xml>settings.xmlnote>settings.xml以下所有配置⽂件资源来源于课程《》,包含的资源列表如下:全局配置 settings.xml顶级标签settings.xml 配置包含如下顶级标签完整的settings.xml 配置<settings ...><localRepository/> <!--本地仓库路径--><interactiveMode/> <!--是否需要和⽤户交互,默认true ,⼀般⽆需修改--><usePluginRegistry/> <!--是否通过pluginregistry.xml 独⽴⽂件配置插件,默认false,⼀般直接配置到pom.xml--><offline/> <!--是否离线模式,默认false ,如果不想联⽹,可以开启--><pluginGroups/> <!--配置如果插件groupid 未提供时⾃动搜索,⼀般很少配置--><servers/> <!--配置远程仓库服务器需要的认证信息,如⽤户名和密码--><mirrors/> <!--为仓库列表配置镜像列表--><proxies/> <!--配置连接仓库的代理--><profiles/> <!--全局配置项⽬构建参数列表,⼀般通过它配置特定环境的定制化操作--><activeProfiles/> <!--⼿⼯激活profile ,通过配置id 选项完成激活--><activation/> <!--profile 的扩展选项,指定某些条件下⾃动切换profile 配置--><properties/> <!--在配置⽂件中声明扩展配置项--><repositories/> <!--配置远程仓库列表,⽤于多仓库配置--><pluginRepositories/> <!--配置插件仓库列表--></settings><settings xmlns="/SETTINGS/1.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/SETTINGS/1.0.0https:///xsd/settings-1.0.0.xsd"><!-- 本地仓库配置:默认~/.m2/repository[店家推荐修改配置] --><localRepository>${user.home}/.m2/repository</localRepository><!-- 交互⽅式配置,读取⽤户输⼊信息[使⽤默认即可,很少修改] --><interactiveMode>true</interactiveMode><!-- 是否启⽤独⽴的插件配置⽂件,⼀般很少启⽤[默认即可,很少修改] --><usePluginRegistry>false</usePluginRegistry><!-- 是否启⽤离线构建模式,⼀般很少修改[如果长时间不能联⽹的情况下可以修改] --><offline>false</offline><!-- 是否启⽤插件groupId ⾃动扫描[很少使⽤,配置插件时建议全信息配置] --><pluginGroups><pluginGroup>org.apache.maven.plugins</pluginGroup></pluginGroups><!--配置服务端的⼀些设置如⾝份认证信息(eg: 账号、密码) --><servers><!--服务器元素包含配置服务器时需要的信息 --><server><!--这是server 的id (注意不是⽤户登陆的id )该id 与distributionManagement 中repository 元素的id 相匹配。

Mavenpom.xml详解

Mavenpom.xml详解

Mavenpom.xml详解⼀、pom 简介POM 是项⽬对象模型 (Project Object Model) 的简称, XML 格式,名称为 pom.xml ,它是 Maven 项⽬的核⼼配置⽂件,该⽂件⽤于管理源代码、配置⽂件、开发者的信息和⾓⾊、问题追踪系统、组织信息、项⽬授权、项⽬的url、项⽬的依赖关系等等.事实上,在 Maven 的世界中,⼀个项⽬可以什么都没有,甚⾄没有代码,但是必须包含 pom.xml ⽂件.并且⼀个 Maven 项⽬有且只有⼀个 pom.xml ⽂件,该⽂件必须在项⽬的根⽬录下.⼆、pom.xml 完整结构<project xmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!-- 基本设置 The Basics --><groupId>...</groupId><artifactId>...</artifactId><version>...</version><packaging>...</packaging><dependencies>...</dependencies><parent>...</parent><dependencyManagement>...</dependencyManagement><modules>...</modules><properties>...</properties><!-- 构建过程的设置 Build Settings --><build>...</build><reporting>...</reporting><!-- 项⽬信息设置 More Project Information --><name>...</name><description>...</description><url>...</url><inceptionYear>...</inceptionYear><licenses>...</licenses><organization>...</organization><developers>...</developers><contributors>...</contributors><!-- 环境设置 Environment Settings --><issueManagement>...</issueManagement><ciManagement>...</ciManagement><mailingLists>...</mailingLists><scm>...</scm><prerequisites>...</prerequisites><repositories>...</repositories><pluginRepositories>...</pluginRepositories><distributionManagement>...</distributionManagement><profiles>...</profiles></project>我们这⾥就选择⼀些⽐较常⽤的配置来说三、pom 常⽤配置1、坐标坐标是⼀个项⽬的唯⼀标识符,可以通过坐标准确的定位到某⼀个具体的项⽬.有了坐标进⾏定位之后,如果其它的 Maven 项⽬想使⽤该项⽬⽣成的 jar 包,只需要通过坐标引⼊依赖即可Maven 坐标是通过 groupId、artifactId、version 来共同定位的.groupId: 组织 Id ,表⽰当前模块所⾪属的项⽬.起名规范:⼀级域名(com、org).⼆级域名(公司名称).项⽬名称artifactId: 模块 Id, 表⽰⼀个项⽬中的某个模块,例如商城项⽬⾥⾯的订单模块、⽤户模块、商品模块...等等version:当前的版本为什么坐标需要三个元素才能定位呢?⽐如你⾃⼰的项⽬中需要使⽤某⼀个 jar 包,那么怎么找到这个 jar 包呢?这个时候你就需要使⽤ groupId 来定位这个 jar 包是属于哪个公司的哪个项⽬,定位到了项⽬之后呢,你还需要使⽤ artifactId 定位到该项⽬的具体模块,因为⼀个项⽬可以有很多的模块,定位到了具体模块之后呢,还需要使⽤ version 来定位具体的版本号,因为⼀个模块可以进⾏迭代,如果不指定具体的版本号也就⽆法准确的定位,这个类似于地理⾥⾯只有通过东经和北纬才能准确定位⼀个地理位置⼀样.<!-- 组织 Id --><groupId>com.xiaomaomao.springAnalyse</groupId><!-- 模块 Id --><artifactId>spring-ioc</artifactId><!-- 具体的版本号 --><version>1.0-SNAPSHOT</version>2、全局变量 propertiesproperties: 全局属性,⼀般情况下⽤于定义全局的 jar 包版本.仅仅是定义全局变量,不起其他作⽤.应⽤场景:在实际项⽬中如果我们使⽤同⼀个公司的 jar 包, jar 包的版本号最好是保持⼀致,因为有时候 jar 包版本不⼀致的情况下,有可能会出现不同版本之间发⽣不兼容的错误, 我们这⾥就以 spring 为例,下⾯的这些依赖当中 spring-context、spring-webmvc 都是属于 spring 的 jar 包,并且它们的版本号都是 4.3.11.RELEASE,突然有⼀天,项⽬经理兴奋的告诉我,spring 推出了 5.0 版本,功能很强⼤,我们要升级版本,那么这个时候你就只能挨个的找到 spring 相关的依赖,⼀个⼀个的把它们升级到 5.0 版本,我们这⾥仅仅只有两个 spring 相关的依赖,改起来⽐较快,可是如果你的项⽬⾥⾯使⽤了⼏⼗个,甚⾄上百个 spring 的依赖呢?这个时候你挨个挨个的去替换,⼯作量⽐较⼤,并且还有可能⼀不留神改错了,好不容易改完了,也没有改错,终于可以休息⼀下了,这个时候项⽬经理那个糟⽼头⼦⼜来了,他告诉你 spring 5.0 有版本缺陷,我们还是改回原来的 4.3.11.RELEASE 版本吧,我想此时你是奔溃的,你就只能挨个挨个的将 spring 的依赖 jar 包⼀个⼀个的还原,好了,还原了,也改好了,终于没事了,你冷不丁的冒出⼀个念头,万⼀项⽬经理⼜要我切换成其它的版本,⼯作量太⼤了,有没有什么⽐较好的办法呢?答案是有的,我们就可以通过 properties 标签来统⼀管理 jar 包的版本<dependencies><!-- spring 基本依赖 --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.11.RELEASE</version></dependency><!-- spring-webmvc 依赖 --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.3.11.RELEASE</version></dependency><!-- juint 依赖 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><!-- servlet-api 依赖 --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.0</version><scope>provided</scope></dependency></dependencies>在 <properties> 标签中定义⼀类 jar 包的版本,引⼊依赖的时候通过 ${标签名} 的⽅式来控制版本<properties><!--标签名称任意,但是最好是⼀个有意义的名称--><spring-version>4.3.11.RELEASE</spring-version><junit-version>4.11</junit-version><javax.servlet-version>4.0.0</javax.servlet-version></properties><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><!--使⽤ ${⾃定义的标签} 来引⼊ properties 中定义的标签⾥⾯的值--><version>${spring-version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring-version}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit-version}</version><scope>test</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>${javax.servlet-version}</version><scope>provided</scope></dependency></dependencies>如果以后想统⼀切换 spring、junit 等 jar 包的版本,我们只需要在 properties 标签中切换就可以了,再也不⽤去依赖中挨个挨个的替换 jar 包的版本了3、dependencydependency 标签统⼀的定义在 dependencies 标签中,它代表的意思是我们可以通过该标签引⼊我们需要的相关 jar 包3.1、如何查找⼀个 jar 包的地址?Maven 依赖官⽹:3.1.1、进⼊官⽹,查找需要的 jar 包3.1.2、选择 jar 包版本3.1.3、复制依赖到项⽬ pom.xml 中3.2、如何查看引⼊的依赖4、依赖的 scope 作⽤域依赖的 scope 标签表⽰的意思是依赖的使⽤范围(也就是这个 jar 包在什么范围内是可以使⽤的),scope 的取值有 compile、test、provided、runtime、system 4.1、compile该依赖可以在整个项⽬中使⽤(是指代码范围, main ⽬录和 test ⽬录下都能使⽤这个依赖),参与打包部署.是 scope 的默认值.典型的例如: commons f ileupload 例如:我们修改 spring 核⼼依赖 spring-context 的 scope 为 test<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring-version}</version><scope>test</scope></dependency>在 main ⽬录下使⽤就出现了报错在 test ⽬录下使⽤就是正常的4.2、test该依赖只能在测试代码中使⽤(是指代码范围,只能在 test ⽬录下使⽤这个依赖),不参与打包部署.典型的例如: junit4.3、provided该依赖编写源代码时需要使⽤,因为当我们使⽤ Servlet 的时候,如果不添加 javax.servlet-api 依赖,就⽆法使⽤⾥⾯相关的 API,如果使⽤了编译就会报错,provided 不参与打包部署.只是在编写源码的时候使⽤,为什么不参与打包部署呢?因为我们的项⽬打包部署到服务器的时候,服务器会为我们提供 javax.servlet-api ,这⾥以 tomcat 为例,找到 tomcat 的安装⽬录,打开⾥⾯的 lib ⽬录,在 tomcat 容器启动的时候会为我们提供 servlet-api.jar ,那么我们项⽬中的 pom.xml 中就不需要再提供 servlet-api 这个依赖了4.4、runtime该依赖编写代码时不需要,运⾏时需要,参与打包部署.典型的例如数据库驱动 mysql-connector-java<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.20</version></dependency>为什么编写代码时不需要呢?jvm 运⾏期的时候通过反射加载数据库驱动,完成例如注册驱动、获取连接、获取 PrepareStatement 对象等,我们编写代码的时候只是在编译期间,根本不会使⽤到数据库驱动,项⽬最终打包部署的时候也是需要数据驱动的,否则你⽆法连接数据库和操作 Sql 语句.4.5、system表⽰使⽤本地系统路径下的 jar 包,需要和 systemPath 配合使⽤,典型的例如 Oracle 数据库驱动: ojdbc.jar ,它是未授权 Maven 中央仓库的(刚刚去 Maven 中央仓库发现有,但是我们就假设它没有被Maven 中央仓库录⼊)有些 jar 包可能因为授权的问题或者是⼀些个⼈的 jar 包,这些 jar 包不会被 Maven 中央仓库录⼊,这个时候如果我们想在项⽬中使⽤这些 jar 包的话,我们可以先将 jar 包下载先来,然后可以在 pom.xml 中配置指向本地某个 jar 包的路径,引⼊相关的 jar 包对主程序是否有效对测试程序是否有效是否参与打包是否参与部署典型例⼦compile 是是是是spring-context test 否是否否junit provided 是是否否servlet-api 、jsp-api runtime 否否是是mysql-connector-java system -----引⼊ Oracle 驱动之后就可以使⽤了,没有出现报错其实吧,我觉得如果某些 jar 包 Maven 中央仓库没有录⼊,我们可以将需要的 jar 包下载下来,然后上传到私服中,通过左边从私服中下载就可以了.这⾥总结⼀下 scope 依赖范围4.6、远程仓库 repositoriesrepositories:⽤来配置当前⼯程使⽤的远程仓库依赖查找顺序:本地仓库--->当前⼯程 pom.xml 中配置的远程仓库--->⽤户级别的 settings.xml 中配置的远程仓库----> 全局 settings.xml 中配置的远程仓库---->Maven 中央仓库应⽤场景:如果有些 jar 包在 Maven 中央仓库没有,但是在其他仓库(例如:阿⾥仓库、spring 仓库、mybatis 仓库)⾥是有这个 jar 包的,例如 spring 新发布了⼀个版本,由于是刚发⾏的版本,性能不太稳定,这个时候Maven 中央仓库⼀般不会将这些 jar 包录⼊,但是你就是想⽤ spring 最新的版本,那么可以在 pom.xml 中通过配置 repositories 从指定的某公司官⽅仓库来获取相应的 jar 包<repositories><!-- 配置 spring 官⽅仓库 --><repository><!-- 远程仓库唯⼀标识符 --><id>spring_repo</id><!-- 仓库名称,可以使⽤⼀个有意义的名称命名 --><name>Private Repository</name><!-- spring 官⽅远程仓库地址 --><url>http://repo.spring.io/milestone</url><!-- ⽤于定位和排序构件的仓库布局类型,它的取值有 default(默认)或 legacy(遗留) --><layout>default</layout><releases><!-- 是否开启 release 或者 snapshots 的下载⽀持.默认值为 false ,表⽰不会从该中央仓库下载快照版本的构件 --><enabled>true</enabled><!-- ⽤来配置 Maven 从远程仓库检查更新的频率,默认是 daily,表⽰每天检查⼀次;never: 从不检查更新;always: 每次构建都检查更新;interval:X 每隔 X 分钟检查⼀次更新 --><updatePolicy>always</updatePolicy><!--⽤来配置 Maven 检查检验和⽂件的策略,当构建被部署到Maven 仓库中时,会同时部署对于应⽤的检验和⽂件,在下载构件的时候, Maven 会验证校验和⽂件checksumPolicy 默认值是 warn ,会执⾏构建时输出警告信息fail :遇到校验和错误就构件失败ignore :完全忽略校验和错误 --><checksumPolicy>warn</checksumPolicy></releases><snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots></repository><!-- 配置 阿⾥ 官⽅远程仓库 --><repository><id>alimaven</id><name>aliyun maven</name><url>/nexus/content/groups/public/</url></repository></repositories>4.7、插件 plugins插件,就是⼀种⼯具.常见的如:清理插件 maven c lean p lugin ,编译插件 maven c ompile p lugin插件和依赖的区别:插件是⼯具,偏向于开发环境.和项⽬功能、源码、打包好的 jar 包没有任何关系.插件和依赖的关系,类似于 IDEA ⼯具和上线的 jar 包.Maven 的核⼼⽂件很⼩,主要的任务都是由插件来完成.定位到:%本地仓库%\org\apache\maven\plugins ,可以看到⼀些下载好的插件4.7.1、插件的⽬标 (Plugin Goals)⼀个插件通常可以完成多个任务,每⼀个任务就叫做插件的⼀个⽬标.如执⾏ mvn install 命令时,调⽤的插件和执⾏的插件⽬标如下4.7.2、将插件绑定到⽣命周期Maven 的⽣命周期是抽象的,实际需要插件来完成任务,这⼀过程是通过将插件的⽬标 (goal) 绑定到⽣命周期的具体阶段 (phase) 来完成的.例如将 maven-compiler-plugin 插件的 compile ⽬标绑定到 default ⽣命周期的 compile 阶段,完成项⽬的源代码编译.Maven 对⼀些⽣命周期的阶段(phase)默认绑定了插件⽬标,因为不同的项⽬有 jar、war、pom 等不同的打包⽅式,因此对应的有不同的绑定关系,其中针对 default ⽣命周期的 jar 包打包⽅式的绑定关系如下第⼆列中,冒号后⾯即是绑定的插件⽬标,冒号前⾯是插件的前缀(prefix),是配置和使⽤插件的⼀种简化⽅式.4.7.3、⾃定义绑定⽤户可以根据需要将任何插件⽬标绑定到任何⽣命周期的阶段, 例如将 maven-source-plugin 的 jar-no-fork ⽬标绑定到 default ⽣命周期的 package 阶段, 这样,以后在执⾏ mvn package 命令打包项⽬时,在 package 阶段之后会执⾏源代码打包,⽣成如 ehcache-core-2.5.0-sources.jar 形式的源码包.<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>2.2.1</version><executions><execution><id>attach-source</id><!-- 要绑定到的⽣命周期的阶段 --><phase>package</phase><goals><!-- 要绑定的插件的⽬标 --><goal>jar-no-fork</goal></goals></execution></executions></plugin></plugins>……</build>4.7.4、pom.xml 中配置插件<build><plugins><plugin><!-- 在这⾥添加 clean 插件,可以替换掉之前插件的版本 --><groupId>org.apache.maven.plugins</groupId><artifactId>maven-clean-plugin</artifactId><version>3.0.0</version></plugin><plugin><!-- ⼀般 web 项⽬需要添加⼀个 tomcat 插件 --><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><!-- 这⾥还可以配置 tomcat 的项⽬访问 URL 和项⽬访问端⼝ --><configuration><path>/xiaomaomao</path><port>8888</port></configuration></plugin></plugins></build>这⾥有个很奇怪的现象,我使⽤ IDEA 帮我创建 Web 项⽬, IDEA ⾃动帮我下载了插件,其中 maven-clean-plugin 插件的版本是 3.1.0 ,我这⾥把插件的版本替换成了 3.0.0然后看⼀下我们加⼊的 maven-tomcat 插件五、超级 pom当我们利⽤ IDEA 为我们创建⼯程的时候,我们没有进⾏任何配置,为什么能下载各种插件呢?这是由于存在超级 pom 的原因,所有的 Maven 项⽬都要继承超级 pom,⾥⾯有 Maven 默认的⼀些配置超级 pom 存放位置: Maven 的安装⽬录\bin\maven-model-builder-3.6.0.jar\org\apache\maven\model\pom-4.0.0.xml解压开 maven-model-builder-3.6.0.jar 这个压缩包,⾥⾯有两个⽬录在 org/apache/maven/model/ ⽬录下有⼀个 pom-4.0.0.xml ,这个 pom 就是超级 pom ,例如⾥⾯就配置了相关的仓库信息。

maven配置文件详解

maven配置文件详解

maven配置⽂件详解1 ⾸先,setting.xml⼀般存在与两个地⽅:maven的安装⽬录/conf/,和${user.home}/.m2/下。

他们的区别是在maven安装⽬录下的setting.xml是所有⽤户都可以应⽤的配置,⽽user.home下的可想⽽知就是针对某⼀⽤户的配置(推荐是在user.home下)。

如果两个都进⾏了配置,则在应⽤的时候会将两个配置⽂件进⾏中和,⽽且user.home下的setting.xml优先级⼤于maven安装⽬录下的。

2 setting.xml⽂件中顶层元素⼀览:[html]1. <span style="font-family:Microsoft YaHei;"><settings xmlns="/SETTINGS/1.0.0"2. xmlns:xsi="http://www.w/2001/XMLSchema-instance"3. xsi:schemaLocation="/SETTINGS/1.0.04. /xsd/settings-1.0.0.xsd">5. <localRepository/>6. <interactiveMode/>7. <usePluginRegistry/>8. <offline/>9. <pluginGroups/>10. <servers/>11. <mirrors/>12. <proxies/>13. <profiles/>14. <activeProfiles/>15. </settings></span>下⾯对各个元素进⾏解析:2.1 localRepository建构系统本地仓库的路径,不设置的话默认是在{user.home}/.m2/repository/下,如果想要系统所有⽤户共⽤⼀个本地仓库,则可以在maven 安装⽬录下的setting.xml中进⾏设置2.2 interactiveMode指定Maven是否试图与⽤户交互来得到输⼊,默认是true2.3 usePluginRegistry如果设置为true,则在{user.home}/.m2下需要有⼀个plugin-registry.xml来对plugin的版本进⾏管理。

Mavensetting.xml配置文件详解

Mavensetting.xml配置文件详解

Mavensetting.xml配置⽂件详解maven的配置⽂件settings.xml存在于两个地⽅:1.安装的地⽅:${M2_HOME}/conf/settings.xml2.⽤户的⽬录:${user.home}/.m2/settings.xml前者⼜被叫做全局配置,对操作系统的所有使⽤者⽣效;后者被称为⽤户配置,只对当前操作系统的使⽤者⽣效。

如果两者都存在,它们的内容将被合并,并且⽤户范围的settings.xml会覆盖全局的settings.xml。

Maven安装后,⽤户⽬录下不会⾃动⽣成settings.xml,只有全局配置⽂件。

如果需要创建⽤户范围的settings.xml,可以将安装路径下的settings复制到⽬录${user.home}/.m2/。

Maven默认的settings.xml是⼀个包含了注释和例⼦的模板,可以快速的修改它来达到你的要求。

全局配置⼀旦更改,所有的⽤户都会受到影响,⽽且如果maven进⾏升级,所有的配置都会被清除,所以要提前复制和备份${M2_HOME}/conf/settings.xml⽂件,⼀般情况下不推荐配置全局的settings.xml。

settings.xml详解声明规范<?xml version="1.0" encoding="UTF-8"?><settings xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/settings-1.0.0.xsd">localRepository<!-- 本地仓库的路径。

默认值为${user.home}/.m2/repository。

--><localRepository>usr/local/maven</localRepository>interactiveMode<!--Maven是否需要和⽤户交互以获得输⼊。

MAVEN配置文件

MAVEN配置文件

MAVEN2的配置文件有两个settings.xml和pom.xmlsettings.xml:保存的是本地所有项目所共享的全局配置信息,默认在maven安装目录的conf目录下,如果没有安装maven而是用的m2eclipse插件,那么也可以把这个配置文件放在.m2目录下pom.xml:描述项目的配置文件,放在每个项目的根目录下settings.xmllocalRepository:本地仓库位置,默认在.m2\repository\,可以人为更改settings.xml<settings xmlns="/POM/4.0.0"xmlns:xsi=/2001/XMLSchema-instancexsi:schemaLocation="/POM/4.0.0/xsd/settings-1.0.0.xsd"><localRepository>path</localRepository><interactiveMode>true/false</interactiveMode><offline>true/false</offline><servers><server><id>serverid</id><username>username</username><password>password</password></server></servers><mirrors><id>id1</id><name>mirror1</name><url>url</url><mirrorOf>id2</mirrorOf></mirrors><proxies><proxy><id>id</id><active>true</active><protocal>http</protocal><host>ip</host><port>8080</port><username>user</username><password>pass<password></proxy></proxies><profiles/><activeProfiles/></settings>复制代码offline:离线开关,是否每次构建都从远程仓库下载,默认falseservers:对应POM文件的distributionManagement元素里定义id,和登陆服务器的用户名、密码mirrors:定义仓库镜像,将仓库地址指向自定义仓库地址(id:新的镜像ID,name:镜像名称,url:镜像地址,mirrorOf:以那个地址做镜像,默认为central)proxies:设置HTTP代理pom.xmlparent 给出父项目的位置,如果存在上一级父项目的话。

Maven中settings.xml配置文件解释以及例子

Maven中settings.xml配置文件解释以及例子
<!-- 镜像库站点列表 --> <!-- mirrors | This is a list of mirrors to be used in downloading artifacts from remote repositories. | | It works like this: a POM may declare a repository to use in resolving certain artifacts. | However, this repository may have problems with heavy traffic at times, so people have mirrored | it to several places. | | That repository definition will have a unique id, so we can create a mirror reference for that
| getting the most out of your Maven installation. Where appropriate, the default
| values (values used when the setting is not specified) are provided.
|
| 2. Global Level. This settings.xml file provides configuration for all Maven
|
users on a machine (assuming they're all using the same Maven
|
installation). It's normally provided in

【Maven】安装配置、目录结构、配置文件、常见命令

【Maven】安装配置、目录结构、配置文件、常见命令

【Maven】安装配置、⽬录结构、配置⽂件、常见命令1、下载配置maven步骤 a、windows下配置jdk的系统环境变量:java_home b、windows下配置maven的系统环境变量:maven_home或者m2_home c、windows下配置maven的系统环境变量:path %maven_home%\bin d、验证 mvn -v 打开cmd命令⾏⼯具,命令查看maven是否安装配置成功 e、配置本地仓库 maven⽬录/conf/settings.xml默认本地仓库:c:/users/YANQUN/.m2/repostory修改本地仓库:<localRepository>D:/mvnrep</localrepository>2、使⽤maven 约定优于配置 硬编码⽅式:job.setpath("d:\\abc") 配置⽅式:conf.xml <path>d:\\abc</path> 约定:使⽤默认值 d:\\abc3、maven约定的⽬录结构 项⽬ -src -main 程序功能代码 -java java代码 -resources 资源代码、配置代码 -test 测试代码 -java -resources -pom.xml 项⽬对象模型,把⼀个项⽬看成⼀个对象(pom.xml⽂件跟src⽬录在同⼀级⽬录)DOM 把⼀个标签看成⼀个对象pom.xml⽂件: <groupId>域名翻转.⼤项⽬名</groupId> ⽐如:<groupId>nqiao.maven</groupId> <artifactId>⼦模块名</artifactId> ⽐如:<artifactId>HelloWorld</artifactId> <version>版本号</version> ⽐如:<version>0.0.1-SNAPSHOT</version>4、maven依赖: A中的某些类,需要使⽤B中的某些类,则称为A依赖B,⽐如commons-fileupload.jar->commons-io.jar 在maven项⽬中,如果要使⽤⼀个当时不存在的jar或模块,则可以通过依赖实现(去本地仓库、远程仓库(私服、中央)去寻找)通过在pom.xml⽂件中,<dependency></dependency>、<dependencies></dependencies>标签来实现依赖5、dos命令执⾏mvn: 必须在pom.xml所在⽬录中执⾏(打开命令⾏⼯具cmd.exe,执⾏maven的相关命令)6、maven常⽤命令 第⼀次执⾏命令时,因为需要下载执⾏该命令的基础环境(maven基础组件、基础jar包),所以会从远程仓库(私服、中央)下载该环境到本地仓库,以后就不⽤下载 mvn compile --只编译main⽬录中的java⽂件,不编译test⽬录的java⽂件 mvn test --测试,只编译test⽬录中的java⽂件,不编译main⽬录的java⽂件 mvn package --把源代码打包成jar/war包 mvn install --将开发的模块放⼊本地仓库,供其他模块使⽤,放⼊的位置,是通过gav决定的。

Maven全局配置文件settings.xml详解

Maven全局配置文件settings.xml详解

Maven全局配置⽂件settings.xml详解⽬录⼀、概要1、settings.xml的作⽤2、settings.xml⽂件位置3、配置的优先级⼆、settings.xml元素详解1、顶级元素概览 1.1、LocalRepository 1.2、InteractiveMode 1.3、UsePluginRegistry 1.4、Offline 1.5、PluginGroups 1.6、Servers 1.7、Mirrors 1.8、Proxies 1.9、Profiles 1.10、ActiveProfiles⼀、概要1、settings.xml的作⽤它是⽤来设置Maven参数的配置⽂件。

并且,settings.xml是Maven的全局配置⽂件。

settings.xml中包含类似本地仓库、远程仓库和联⽹使⽤的代理信息等配置。

2、settings.xml⽂件位置settings.xml⽂件⼀般存在于Maven的安装⽬录的conf⼦⽬录下⾯,或者是⽤户⽬录的.m2⼦⽬录下⾯。

3、配置的优先级其实相对于多⽤户的PC机⽽⾔,在Maven安装⽬录的conf⼦⽬录下⾯的settings.xml才是真正的全局的配置。

⽽⽤户⽬录的.m2⼦⽬录下⾯的settings.xml的配置只是针对当前⽤户的。

当这两个⽂件同时存在的时候,那么对于相同的配置信息⽤户⽬录下⾯的settings.xml中定义的会覆盖Maven安装⽬录下⾯的settings.xml中的定义。

⽤户⽬录下的settings.xml⽂件⼀般是不存在的,但是Maven允许我们在这⾥定义我们⾃⼰的settings.xml,如果需要在这⾥定义我们⾃⼰的settings.xml的时候就可以把Maven安装⽬录下⾯的settings.xml⽂件拷贝到⽤户⽬录的.m2⽬录下,然后改成⾃⼰想要的样⼦。

⼆、settings.xml元素详解1、顶级元素概览<settings xmlns="/SETTINGS/1.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/SETTINGS/1.0.0https:///xsd/settings-1.0.0.xsd"><localRepository/><interactiveMode/><usePluginRegistry/><offline/><pluginGroups/><servers/><mirrors/><proxies/><profiles/><activeProfiles/></settings>1.1、LocalRepository作⽤:该值表⽰构建系统本地仓库的路径。

maven configuration解析

maven configuration解析

Maven是一个流行的项目管理工具,它主要用于Java评台的项目构建、依赖管理和项目报告的生成。

在Maven中,配置是一个非常重要的部分,它决定了项目的构建、打包、部署等行为。

本文将对Maven 的配置进行解析,包括Maven的配置文件、项目的POM文件以及常见的配置项。

一、Maven的配置文件Maven的配置文件包括全局配置文件和用户配置文件。

全局配置文件是指Maven安装目录下的conf目录中的settings.xml文件,它包含了Maven的全局配置信息,例如Maven的本地仓库路径、代理服务器设置、镜像设置等。

用户配置文件是指用户目录下的.m2目录中的settings.xml文件,它包含了用户自定义的配置信息,例如用户的身份认证信息、仓库的设置等。

二、项目的POM文件Maven项目的POM文件是项目的核心配置文件,它包含了项目的基本信息、依赖关系、构建配置等。

POM文件的主要配置包括:1. 项目的基本信息:包括项目的groupId、artifactId、版本号等,这些信息在Maven中用来唯一标识一个项目。

2. 项目的依赖关系:通过dependencies元素可以指定项目的依赖项,包括依赖的groupId、artifactId、版本号等信息。

3. 项目的构建配置:包括项目的源代码目录、资源目录、输出目录等,通过build元素可以指定项目的构建配置信息。

4. 项目的插件配置:Maven通过插件来完成各种构建任务,通过plugins元素可以指定项目所使用的插件及其配置信息。

三、常见的配置项除了全局配置文件和POM文件外,Maven还有一些常见的配置项,这些配置项可以通过命令行参数、环境变量、系统属性等方式进行配置,主要包括:1. 仓库的配置:Maven使用仓库来存储项目的依赖项,通过指定仓库的路径、远程仓库的位置区域等可以进行仓库的配置。

2. 编译插件的配置:Maven使用插件来完成项目的编译任务,通过配置插件的参数可以对编译过程进行定制。

Maven的仓库和settings.xml配置文件

Maven的仓库和settings.xml配置文件

Maven的仓库和settings.xml配置⽂件(尊重劳动成果,转载请注明出处:冷⾎之⼼的博客)快速导航:⽬录在Maven基础概念和安装配置⼀⽂中,我们简单学习了Maven是什么,安装包⾥边的各个⽂件夹都存放着哪些东西,并且进⾏了简单的安装配置。

在本⽂中,我们将进⼀步学习了解何为Maven仓库以及Maven的配置⽂件settings.xml如何配置。

Maven的仓库Maven⽤来存储依赖和插件的⼀个统⼀的地⽅,称之为仓库,Maven仓库⼜分为本地仓库和远程仓库。

远程仓库⼜分为私服和中央仓库等。

我们以⼀幅图来表⽰它们的关系:本地仓库就是maven在本地(我们的计算机上)存储构件(依赖的Jar包等)的仓库,默认是在⽤户的.m2/repository/⽬录下。

需要注意的是刚开始在.m2/下边是没有这个repository/⽂件夹的,当我们在命令⾏中运⾏mvn命令后才会出现该⽂件夹,并且在该⽂件夹下存储我们从远程仓库下载的构件。

既然Maven默认在/.m2/repository/下存储依赖和构件,那么我们是不是可以改变⾃定义这个位置?答案是肯定的,注意看图中的/.m2/settings.xml 该⽂件是maven的配置⽂件,我们可以在该⽂件中通过标签<localRepository></localRepository>来配置本地仓库的位置。

(settings.xml⽂件是啥?其作⽤是啥?我们需要如何配置将在下边详细讲解)远程仓库远程仓库⼜分为中央仓库,私服以及其它公共库,我们也借⽤⼀幅图来阐述它们之间的关系。

由图中可以看出,我们Maven⽤户是在和私服打交道,包括上传和下载构件,当私服满⾜不了我们的下载构件需求时,私服会和中央仓库或者其余公共仓库交互,将⽤户需要的构件缓存在私服仓库中。

那么何为私服?私服私服是⼀种特殊的远程仓库,它是架设在局域⽹内的仓库服务,私服代理⼴域⽹上的远程仓库,供局域⽹内的Maven⽤户使⽤。

Log4j2+Maven的配置文件示例详解

Log4j2+Maven的配置文件示例详解

Log4j2+Maven的配置⽂件⽰例详解⼀、配置Maven:pom.xml<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><log4j2.version>2.6.2</log4j2.version></properties><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>${log4j2.version}</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>${log4j2.version}</version></dependency>⼆、配置log4j.xml⽂件:将配置⽂件放到classpath⽬录下(/root/workspace/lucenedemo/src/main/resources/log4j.xml)。

⽂件名:log4j2.xml<?xml version="1.0" encoding="UTF-8"?><!-- status : 指定log4j本⾝的打印⽇志的级别.ALL< Trace < DEBUG < INFO < WARN < ERROR< FATAL < OFF。

maven本地仓库配置文件

maven本地仓库配置文件

maven本地仓库配置⽂件
背景:在使⽤maven的过程中,感觉本地的jar包位置飘忽不定,归根结底是因为对maven的配置⽂件理解不清楚造成的。

在maven的安装包下⾯D:\apache-maven-3.6.1\conf有settings.xml⽂件,可以设置相应的仓库
<localRepository>D:\repository\.m2</localRepository>
PS:不要配置⽤户的环境变量,就使⽤全局的即可。

Windows 下Maven安装配置(本地仓库配置)
问题排查
to execute goal on project dubhe_account_core_common: Could not resolve dependencies for project com.jd.jr.fintech.dubhe.account:dubhe_account_core_common:jar:1.0.0: Could not find artifact com.jd.jmq:jmq-client-spring:jar:2.1 [ERROR]
今天在Intellij下⾯使⽤mven命令打依赖树,⼀直报这个错。

后来经过师傅的排查,是因为idea中maven命令使⽤的不是配置的⽤户settings.xml⽂件。

⽤的是全局的配置⽂件。

maven插件⽤的是⽤户配置的命令。

所以为了统⼀,settings.xml⽂件统⼀⽤maven安装⽬录下的配置⽂件。

解决思路:
先在命令⾏敲相关的mven命令,查看报错的原因。

Maven配置文件pom.xml详解

Maven配置文件pom.xml详解

Maven配置文件pom.xml详解什么是POM?POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml。

在Maven中,当谈到Project的时候,不仅仅是一堆包含代码的文件。

一个Project往往包含一个配置文件,包括了与开发者有关的,缺陷跟踪系统,组织与许可,项目的URL,项目依赖,以及其他。

它包含了所有与这个项目相关的东西。

事实上,在Maven世界中,project可以什么都没有,甚至没有代码,但是必须包含pom.xml文件。

概览下面是一个POM项目中的pom.xml文件中包含的元素。

注意,其中的modelVersion是4.0.0,这是当前仅有的可以被Maven2&3同时支持的POM版本,它是必须的。

1<project xmlns="/POM/4.0.0"2 xmlns:xsi="/2001/XMLSchema-instance"3 xsi:schemaLocation="/POM/4.0.04 /xsd/maven-4.0.0.xsd">5<modelVersion>4.0.0</modelVersion>67<!-- 基本设置 -->8<groupId>...</groupId>9<artifactId>...</artifactId>10<version>...</version>11<packaging>...</packaging>12<dependencies>...</dependencies>13<parent>...</parent>14<dependencyManagement>...</dependencyManagement>15<modules>...</modules>16<properties>...</properties>1718<!-- 构建过程的设置 -->19<build>...</build>20<reporting>...</reporting>2122<!-- 项目信息设置 -->23<name>...</name>24<description>...</description>25<url>...</url>26<inceptionYear>...</inceptionYear>27<licenses>...</licenses>28<organization>...</organization>29<developers>...</developers>30<contributors>...</contributors>3132<!-- 环境设置 -->33<issueManagement>...</issueManagement>34<ciManagement>...</ciManagement>35<mailingLists>...</mailingLists>36<scm>...</scm>37<prerequisites>...</prerequisites>38<repositories>...</repositories>39<pluginRepositories>...</pluginRepositories>40<distributionManagement>...</distributionManagement> 41<profiles>...</profiles>42</project>基本的设置:POM包含了一个project所需要的所有信息,当然也就包含了构建过程中所需要的插件的配置信息,事实上,这里申明了"who","what",和"where",然而构建生命周期(build lifecycle)s中说的是"when"和"how"。

详解Mavensettings.xml配置(指定本地仓库、阿里云镜像设置)

详解Mavensettings.xml配置(指定本地仓库、阿里云镜像设置)

详解Mavensettings.xml配置(指定本地仓库、阿⾥云镜像设置)⼀、settings.xml⽂件会在两个⽬录下存在:1、Maven安装⽬录(全局):%MAVEN_HOME%\conf\settings.xml2、⽤户安装⽬录(⽤户):${user.home}\.m2\settings.xml第⼀个是全局配置,第⼆个是⽤户配置。

当两者都存在,它们的内容将被合并,特定于⽤户的settings.xml⽂件占主导地位。

如果从头开始创建⽤户特定的配置,可以将全局的settings.xml复制到${user.home}\.m2⽬录下。

我的Maven安装⽬录:(%MAVEN_HOME%)D:\apache-maven-3.5.2我的⽤户安装⽬录:(${user.home})C:\Users\Administrator打开⽤户⽬录下的settings.xml,如图所⽰:⼆、指定本地仓库1、本机新建⼀个⽂件夹当做本地仓库我建的⽂件夹路径为:F:\MavenRepository2、在settings.xml中添加localRepository标签三、配置阿⾥云镜像(因为要访问国外服务器,会很慢)在settings.xml⽂件中的mirrors下添加mirror标签<mirror><id>alimaven</id><name>aliyun maven</name> <url>/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror>三、⽤Maven命令创建⼀个Java项⽬,可以看到初次创建会加载⼀些jar包mvn archetype:generate -DarchetypeArtifactId=maven-archetype-quickstart -DgroupId=com.abc -DartifactId=Blog看到如上图所⽰内容,表⽰⽤Maven创建Java⼯程成功!项⽬结构图如图所⽰,缺少哪个⽂件夹就⾃⼰创建以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

Maven 详细配置

Maven 详细配置

Maven是一个项目管理工具,用于管理项目的生命周期, 它包含了项目生命周期管理,软件包依赖管理。

软件公司项目采用Maven 的比例在持续增长。

Maven 的配置1. 安装配置Maven:1.1 从Apache网站/ 下载并且解压缩安装Apache Maven下载:apache-maven-3.6.2-bin.zip1.2 配置Maven 的conf文件夹中配置文件settings.xml。

1.3 修改settings.xml,添加镜像服务器设置:需要在外网使用Maven可以尝试使用阿里云提供的Maven镜像服务器。

修改settings.xml文件, 添加阿里云镜像服务器配置信息:镜像服务器URL:/nexus/content/groups/public/完整配置文件: settings.xml使用鼠标右键的链接另存为功能, 保存替换原有Maven配置文件即可.最新版的Eclipse已经内嵌了Mevne插件m2e, 不需要安装Maven插件, 如果不做任何配置, 会自动连接使用maven中央库自然可以使用, 但是中央库在国外, 受到中国防火墙等因素影响其访问速度很慢, 只有连接到国内镜像库才能提高Maven运行速度. 连接到国内镜像库按照如下配置.2.1 打开Eclipse的首选项设置2.2 找到Maven的配置项目2.3 设置Maven的全局配置文件settings.xmlEclipse会自动的使用settings.xml 文件中包含镜像库的URL地址信息, 找到Maven镜像库位置. 如何配置settings.xml文件?2.4 更新配置信息2.5 找到Window菜单2.6 开启Maven的视图, 检查是否已经配置了镜像库Maven功能强大, 可以参与管理软件的整个生命周期. Java软件开发中的jar包管理更是Maven的绝技.1.1 选择菜单创建Maven项目1.2 选择项目目录结构的骨架1.3 输入项目相关信息1.4 Maven jar项目的目录结构因为这个步骤必须连接到Maven服务器获取相关信息, 如果配置和网络有故障则这个步骤就会出现错误! 如果出现错误请使用浏览器检测是否能够访问Maven服务器的URL.阿里云Maven内网镜像库: /nexus/content/groups/public/安装配置Maven Eclipse中Maven的配置2.1 选择菜单创建Maven项目1.2 选择项目目录结构的骨架1.3 输入项目相关信息1.4 Maven war项目的目录结构因为这个步骤必须连接到Maven服务器获取相关信息, 如果配置和网络有故障则这个步骤就会出现错误! 如果出现错误请使用浏览器检测是否能够访问Maven服务器的URL.阿里云Maven内网镜像库: /nexus/content/groups/public/安装配置Maven Eclipse中Maven的配置1.5 创建Web部署描述文件web.xml消除检测错误Eclipse与Maven配合提供了强大的jar组件集成功能.3.1 更新Maven库的索引文件Mavne索引用于搜索jar组件"坐标", 更新索引以后就可以在Eclipse中搜索jar组件"坐标", 但这个功能不是必须的, 使用4. 在线搜索添加Jar 组件"坐标"TTS9 Eclipse工作空间中已经更新过Maven索引, 一般无需更新这个索引, 但是如果更换过Eclipse工作空间, 就需要再次更新Maven索引, 如果无法更新索引, 使用4. 在线搜索添加Jar组件.阿里云Maven 镜像服务器没有提供Mavne索引功能, 无法下载Maven索引! 使用4. 在线搜索添加Jar组件.3.2 打开Maven项目中的pom.xml文件3.3 搜索需要jar组件包"坐标"这个搜索功能是利用3.1 更新Maven库的索引文件的索引完成, 如果没有更新过索引, 这个功能失效!!3.4 搜索结果就是在pom.xml文件中"坐标", 保存pom.xml时候会自动下载jar组件这个搜索功能是利用Maven 仓库服务器完成的, 如果不能连接到Maven仓库服务器, 这是会发生错误!! 如果出现问题请参考: Maven 的配置由于版权的问题, 无法在公共Maven服务器上下载Oracle JDBC Driver 3.5 使用Maven下载的jar组件. 组件保存在本地仓库".m2"文件夹中3.6 如果出现下载故障, 可以在检查Maven仓库正常联通后, 再删除本地仓库".m2"以后"更新Maven 项目"Maven组件坐标可以在Eclipse中搜索, 也可以利用在线工具搜索4.1 达内jar组件"坐标"搜索4.3 搜索结果很多, 选择需要的组件版本, 找到组件"坐标"4.4 将找到组件"坐标" 复制到pom.xml文件中, 保存pom.xml文件时候自动下载jar组件.4.5 下载jar组件自动保存在本地库".m2" 文件夹.。

Maven之pom.xml配置文件详解

Maven之pom.xml配置文件详解

Maven之pom.xml配置⽂件详解此⽂⾮原创,摘⾃:setting.xml主要⽤于配置maven的运⾏环境等⼀系列通⽤的属性,是全局级别的配置⽂件;⽽pom.xml主要描述了项⽬的maven坐标,依赖关系,开发者需要遵循的规则,缺陷管理系统,组织和licenses,以及其他所有的项⽬相关因素,是项⽬级别的配置⽂件。

POM介绍POM是项⽬对象模型(Project Object Model)的简称,它是Maven项⽬中的⽂件,使⽤XML表⽰,名称叫做pom.xml。

作⽤类似ant的build.xml ⽂件,功能更强⼤。

该⽂件⽤于管理:源代码、配置⽂件、开发者的信息和⾓⾊、问题追踪系统、组织信息、项⽬授权、项⽬的url、项⽬的依赖关系等等。

事实上,在Maven世界中,project可以什么都没有,甚⾄没有代码,但是必须包含pom.xml⽂件。

基础配置⼀个典型的pom.xml⽂件配置如下,注意,其中的modelVersion是4.0.0,这是当前仅有的可以被Maven2&3同时⽀持的POM版本,它是必须的。

<project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><!-- 模型版本。

maven2.0必须是这样写,现在是maven2唯⼀⽀持的版本 --><modelVersion>4.0.0</modelVersion><!-- 公司或者组织的唯⼀标志,并且配置时⽣成的路径也是由此⽣成,如com.winner.trade,maven会将该项⽬打成的jar包放本地路径:/com/winner/trade 含义:组织标识,定义了项⽬属于哪个组,风向标,坐标,或者说若把本项⽬打包 ⽤途:此名称则是本地仓库中的路径,列如:com.winner.trade,在M2_REPO⽬录下,将是: /com/winner/trade⽬录 命名规范:项⽬名称,模块,⼦模块 --><groupId>com.winner.trade</groupId><!-- 本项⽬的唯⼀ID,⼀个groupId下⾯可能多个项⽬,就是靠artifactId来区分的 含义:项⽬名称也可以说你所模块名称,定义当⾯Maven项⽬在组中唯⼀的ID ⽤途:例如:trade-core,在M2_REPO⽬录下,将是:/com/winner/trade/trade-core⽬录 命名规范:唯⼀就好 --><artifactId>trade-core</artifactId><!-- 本项⽬⽬前所处的版本号 含义:项⽬当前的版本号 ⽤途:例如:0.0.1-SNAPSHOT,在M2_REPO⽬录下,将是:/com/winner/trade/trade-core/0.0.1-SNAPSHOT⽬录 --><version>1.0.0-SNAPSHOT</version><!-- 打包的机制,如pom,jar, maven-plugin, ejb, war, ear, rar, par,默认为jar --><packaging>jar</packaging> <!-- 元素声明了⼀个对⽤户更为友好的项⽬名称 --><name>maven</name><!-- 帮助定义构件输出的⼀些附属构件,附属构件与主构件对应,有时候需要加上classifier才能唯⼀的确定该构件 不能直接定义项⽬的classifer,因为附属构件不是项⽬直接默认⽣成的,⽽是由附加的插件帮助⽣成的 --><classifier>...</classifier><!-- 定义本项⽬的依赖关系 --><dependencies><!-- 每个dependency都对应这⼀个jar包 --><dependency><!-- ⼀般情况下,maven是通过groupId、artifactId、version这三个元素值(俗称坐标)来检索该构件, 然后引⼊你的⼯程。

maven配置文件

maven配置文件

maven配置⽂件配置⽂件构建配置⽂件⼤体上有三种类型:类型在哪定义项⽬级(Per Project)定义在项⽬的POM⽂件pom.xml中⽤户级(Per User)定义在Maven的设置xml⽂件中 (%USER_HOME%/.m2/settings.xml)全局(Global)定义在 Maven 全局的设置 xml ⽂件中 (%M2_HOME%/conf/settings.xml)1.全局 settings.xml这个⽂件来源于maven安装包的conf⽂件夹下或idea⾃带的即apache-maven-2.0.8/conf/;或/media/xl/dfbbc094-3a1d-401b-9ad2-adf72005a980/home/xl/下载/idea-IC-181.5087.20/plugins/maven/lib/maven3/conf 2.⽤户级settings.xml位于.../.m2/settings.xml⽂件夹中,若.m2⽂件夹没有settings.xml⽂件,则可以把全局settings.xml复制过来⽤。

我的电脑.m2⽂件夹地址为:/media/xl/dfbbc094-3a1d-401b-9ad2-adf72005a980/home/xl/.m2可以配置国内的仓库地址:<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf>————————————————版权声明:本⽂为CSDN博主「听琴⼀曲」的原创⽂章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原⽂出处链接及本声明。

原⽂链接:https:///qq_42960881/java/article/details/911297573.pom.xmlPOM 中可以指定以下配置:项⽬依赖插件执⾏⽬标项⽬构建 profile项⽬版本项⽬开发者列表相关邮件列表信息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一.pom.xml详解1.概述pom中节点如下分布2.基本配置modelVersion:pom模型版本,maven2和3只能为4.0.0groupId:组ID,maven用于定位artifactId:在组中的唯一ID用于定位version:项目版本packaging:项目打包方式,有以下值:pom, jar, maven-plugin, ejb, war, ear, rar, par 3.依赖配置3.1 parentgroupId:父项目的构件标识符artifactId:父项目的唯一标识符relativePath:Maven首先在当前项目的找父项目的pom,然后在文件系统的这个位置(relativePath),然后在本地仓库,再在远程仓库找。

version:父项目的版本3.2 modules有些maven项目会做成多模块的,这个标签用于指定当前项目所包含的所有模块。

之后对3.3 properties3.4 dependencies项目相关依赖配置,如果在父项目写的依赖,会被子项目引用,一般父项目会将子项目公用的依赖引入(将在之后详细讲解)这边依赖和中央仓库中的一致,就可以引入对应的jar3.5 dependencyManagement配置写法同dependencies本号:父项目:子项目:这样的好处是,父项目统一了版本,而且子项目可以在需要的时候才引用对应的依赖4.构建配置4.1 build4.2 reporting该元素描述使用报表插件产生报表的规范。

当用户执行“mvn site”,这些报表就会运行。

在页面导航栏能看到所有报表的链接。

5.项目信息name:给用户提供更为友好的项目名description:项目描述,maven文档中保存url:主页的URL,maven文档中保存inceptionYear:项目创建年份,4位数字。

当产生版权信息时需要使用这个值licenses:该元素描述了项目所有License列表。

应该只列出该项目的license列表,不要列出依赖项目的license列表。

如果列出多个license,用户可以选择它们中的一个而不是接受organization: 组织名2.url 组织主页url developers:项目开发人员列表(如下)6.环境设置6.1 issueManagement目的问题管理系统(Bugzilla, Jira, Scarab)的名称和URLurl:路径6.2 ciManagementurl:持续集成系统的URLnotifiers:构建完成时,需要通知的开发者/用户的配置项。

包括被通知者信息和通知条件(错误,失败,成功,警告)type:通知方式sendOnError:错误时是否通知sendOnFailure:失败时是否通知sendOnSuccess:成功时是否通知sendOnWarning:警告时是否通知address:通知发送到的地址configuration:扩展项6.3 mailingLists项目相关邮件列表信息subscribe, unsubscribe: 订阅邮件(取消订阅)的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建archive:浏览邮件信息的URLpost:接收邮件的地址6.4 scmconnection, developerConnection:这两个表示我们如何连接到maven的版本库。

connection 只提供读,developerConnection将提供写的请求写法如:scm:[provider]:[provider_specific]如果连接到CVS仓库,可以配置如下:scm:cvs:pserver:127.0.0.1:/cvs/root:my-project tag:项目标签,默认HEADurl:共有仓库路径6.5 prerequisites6.6 repositories,pluginRepositoriesreleases, snapshots:这是各种构件的策略,release或者snapshot。

这两个集合,POM就可以根据独立仓库任意类型的依赖改变策略。

如:一个人可能只激活下载snapshot用来开发。

enable:true或者false,决定仓库是否对于各自的类型激活(release 或者snapshot)。

updatePolicy: 这个元素决定更新频率。

maven将比较本地pom的时间戳(存储在仓库的maven数据文件中)和远程的. 有以下选择: always, daily (默认), interval:X (x是代表分钟的整型) ,never.checksumPolicy:当Maven向仓库部署文件的时候,它也部署了相应的校验和文件。

可选的为:ignore,fail,warn,或者不正确的校验和。

layout:在上面描述仓库的时候,提到他们有统一的布局。

Maven 2有它仓库默认布局。

然而,Maven 1.x有不同布局。

使用这个元素来表明它是default还是legacy。

6.7 distributionManagementdownloadUrl: 其他pom可以通过此url的仓库抓取组件status:给出该构件在远程仓库的状态none: 默认converted: 将被早期Maven 2 POM转换过来partner: 这个项目会从合作者仓库同步过来deployed: 从Maven 2或3实例部署verified: 被核实时正确的和最终的6.8 Repository指定Maven pom从远程下载控件到当前项目的位置和方式,如果snapshotRepository没有被id, name:仓库的唯一标识uniqueVersion:true或false,指明控件部署的时候是否获取独立的版本号。

url:repository元素的核心。

指定位置和部署协议发布控件到仓库。

layout:布局,default或legacy6.9 Site Distribution多分布存储库,distributionManagement负责定义如何部署项目的网站和文档。

id, name, url: 这些元素与distributionManagement repository中的相同6.10 Relocation重新部署-项目不是静态的,是活的。

他们需要被搬到更合适的地方。

如:当你的下个成功的开源项目移到Apache下,重命名为org.apache:my-project:1.0 对你项目更有好处。

6.11 profilesprofile可以让我们定义一系列的配置信息(插件等),然后指定其激活条件profile的相关配置可以参考–setting.xml详解参考文档:/oDeviloo/article/details/52050277二. setting.xml详解1.文件概览通过配置文件中的注释,我们可以看到,有两种配置此文件的方法2.localRepositorylocalRepository用于构建系统的本地仓库的路径。

默认的值是${user.home}/.m2/repository。

3.interactiveModeinteractiveMode 用于决定maven是否在需要输出的时候提示你,默认true。

如果是false,它将使用合理的默认值,或者基于一些设置。

4.offline决定maven是否在构建的时候进行网络传输。

默认false,表示联网状态,true为取消联网。

在某些情况下设置为true是很有用的,比如jar无法从网上下载等5.pluginGroupspluginGroups 插件组这样Maven可以使用简单的命令执行org.morbay.jetty:jetty-maven-plugin:run我们同样可以在pom文件中看到相似的配置,只是在这配置了就起到全局的作用,而不用每个项目中pom配置jetty6.proxies此项用于设置http代理有时候由于安全问题,需要配置http代理,通过代理服务才能正常访问外部仓库下载资源可以ping 来访问中央仓库telnet 218.14.227.197 3128 来查看代理地址以及端口是否畅通id:proxy的唯一标识,用来区别proxy元素。

active:表示是否激活代理,如果配置多个,默认是第一个生效username,password:提供连接代理服务器时的认证。

host,port:主机地址,端口号nonProxyHosts:用来表示哪些主机名不需要代理,可以用|来分割多个,此外也支持通配符,如:*表示所有以结尾的都不需要通过代理7.servers这是一个认证配置的列表,根据系统中使用的server-id控制。

认证配置在maven连接到远程服务时使用。

8.mirrorsid:用于继承和直接查找,唯一mirrorOf:镜像所包含的仓库的Idname:唯一标识,用于区分镜像站url:镜像路径9.profiles1.settings.xml中时意味着该profile是全局的,所以只能配置范围宽泛一点配置信息,比如远程仓库等。

而一些比较细致一点的需要定义在项目的pom.xml中。

2.profile可以让我们定义一系列的配置信息,然后指定其激活条件。

根据每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置。

例子:通过profile定义jdk1.5以上使用一套配置,jdk1.5以下使用另外一套配置;或者通过操作系统来使用不同的配置信息。

3.settings.xml中的信息有repositories、pluginRepositories和properties。

定义在properties的值可以在pom.xml中使用。

下面的例子是从官网翻译的,大家有疑问还可以去官网查看Activationjdk:检测到对应jdk版本就激活os:针对不同操作系统property:当maven检测到property(pom中如${name}这样的)profile将被激活file:如果存在文件,激活,不存在文件激活通过以下命令查看哪些profile将生效properitesMaven的属性是值占位符,就像Ant中的一样。

如果X是一个属性的话,在POM中可以使用${X}来进行任意地方的访问。

他们来自于五种不同的风格,所有都可以从settings.xml文件中访问到。

1.env.x:“env.”前缀会返回当前的环境变量。

如${env.PATH}就是使用了$path环境变量(windosws中的%PATH%)。

2.project.x:一个点“.”分割的路径,在POM中就是相关的元素的值。

例如:<project><version>1.0</version></project>就可以通过${project.version}来访问。

相关文档
最新文档