maven整理
- 格式:docx
- 大小:215.37 KB
- 文档页数:3
【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 相匹配。
Maven的介绍及使⽤⼀、Maven简介 Maven 是⼀个项⽬管理⼯具,可以对 Java 项⽬进⾏构建、依赖管理,是⼀个⾃动化构建⼯具。
⾃动化构建⼯具:将原材料(java、js、css、html....)->产品(可发布项⽬) 编译-打包-部署-测试 -> ⾃动构建Maven的作⽤:1、管理jar包1. 增加第三⽅jar包(不需要⾃⼰下载jar包)2. 管理jar包之间的依赖关系(maven⾃动关联下载所有依赖的jar包)2、将项⽬拆分成若⼲个模块:借助于Maven可以将⼀个项⽬拆分成多个⼯程。
(例如爱洋葱)Maven能⼲的事情: 清理:删除编译的结果,为重新编译做准备。
编译:java->class 测试:针对于项⽬中的关键点进⾏测试,也可⽤项⽬中的测试代码去测试开发代码 报告:将测试结果进⾏显⽰ 打包:将项⽬中包含的多个⽂件压缩成⼀个⽂件,⽤于安装或部署(java项⽬打成⼀个jar包,web项⽬打成⼀个war包,⽗⼯程-pom) 安装:将打成的包,放到本地仓库,供其他项⽬使⽤。
部署:将打成的包,放到服务器上,准备运⾏。
Eclipse中的项⽬,要在Tomcat中运⾏,需要部署: a、通过eclipse中add and remove按钮进⾏部署 b、将Web项⽬打成⼀个war包,然后将该war包复制到Tomcat/webapps中即可 通常下载⼀个jar包,先在本地仓库中下载,如果本地仓库中不存在,则再联⽹到中央仓库(镜像)去下载。
约定配置: Maven 提倡使⽤⼀个共同的标准⽬录结构,Maven 使⽤约定优于配置的原则,⼤家尽可能的遵守这样的⽬录结构。
如下所⽰:⼆、Maven POM POM(项⽬对象模型) 是 Maven ⼯程的基本⼯作单元,是⼀个XML⽂件,包含了项⽬的基本信息,⽤于描述项⽬如何构建,声明项⽬依赖,等等。
执⾏任务或⽬标时,Maven 会在当前⽬录中查找 POM。
Maven中央仓库地址整理
最近做项⽬的时候,⼀直发现常⽤的oschina maven源⼀直都没有反应,后⾯发现原来oschina竟然关闭了maven源服务,后⾯经同事推荐了阿⾥云的maven源,这速度杠杠的
Maven 中央仓库地址:
其实,国内maven镜像虽然快,但是更新⽐较慢,国外的仓库由于国内⽹络的原因,下载简直不能忍,但是更新很快,可以根据⾃⾝的情况选择,有些⼈会花些钱开代理访问外⽹⽐较快,建议使⽤原装。
下⾯是maven库配置
<mirror>
<id>oschina-repo</id>
<name>开源中国镜像</name>
<mirrorOf>central</mirrorOf>
<url>可以根据⾃⼰的⽹络情况选填上⾯的url</url>
</mirror>
其实不管是配置哪个地址,个⼈觉得还是创建⼀个私⼈nexus仓库⽐较好~ 这样团队能够分享,也不⽤过多的下载版本。
Maven中文手册Maven最早始于Jarkarta Turbine项目,目的是为了简化构建过程。
这个项目下面有几个子项目,每个子项目都有自己的Ant文件,但是区别很小,而且生成的JAR 文件都要check in到CVS中。
我们希望有一种标准的方式来构建这些项目,一种可以清晰描述项目的方式,一种易于发布项目信息的方式,一种在多个项目之间共享JARs 的方式。
这个结果就是产生了一个可以用于构建、管理任何基于java的项目。
我们希望我们创造的这个工具可以让Java开发者的日常工作更加轻松,并有助于理解基于java的项目.项目对象模型Maven是基于项目对象模型(POM)的概念而创建的。
在这个模型中,所有由Maven产生的 artifact都是清晰定义的项目模型的结果。
构建,文档,源码度量,源码交叉引用和其他任何由Maven plug-in 提供的东西都是由POM来控制的。
POM 处理机制这篇文档简单的描述了Maven执行过程中是如何处理POM的。
这里有一些简单的POM例子来展示继承机制和插值机制。
POM 插值机制POM(通常以project.xml的名字出现)现在已经被当作Jelly脚本来处理了。
大部分时候,用户无须关心project.xml文件是不是真正的Jelly脚本,但是,如果需要的话,也可以使用内置值。
我也不愿看到逻辑控制语句出现在project.xml中,但是由于 project.xml实际上已经是一个隐含的jelly的脚本,所以它会有足够的灵活性:-)。
下面是一个简单的例子。
<?xml version="1.0" encoding="ISO-8859-1"?><project><pomVersion>3</pomVersion><groupId>maven</groupId><artifactId>maven</artifactId><name>Maven</name><currentVersion>1.0-b5-dev</currentVersion><organization><name>Apache Software Foundation</name><url><logo>/images/jakarta-logo-blue.gif</logo></organization><inceptionYear>2001</inceptionYear><package>org.apache.${pom.artifactId}</package><logo>/images/${pom.artifactId}.jpg</logo><description>Maven is a project that was created in ${pom. inceptionYear}.</description><shortDescription>${} is a Java Project Managem ent Tool</shortDescription></project>POM 继承机制现在有一种简单方式可以用于在POM中进行继承,下面是一个简单的例子:<?xml version="1.0" encoding="ISO-8859-1"?><project><extend>project.xml</extend><groupId>super-extendo</groupId><artifactId>super-extendo<artifactId><name>Super Extendo</name><build><unitTest><includes><include>**/*Test*.java</include></includes><excludes><exclude>**/TestAll.java</exclude><exclude>**/*Abstract*.java</exclude></excludes></unitTest></build></project>目前对POM父对象的解析还相对较弱,现在对一层以上的继承还没有做过任何测试。
maven安装+maven本地仓库配置+maven镜像1.安装maven前我们电脑上要确保安装了JDK1.6以上的版本2.下载MavenMaven官网下载地址是/download.html下载apache-maven-3.2.5后,解压到你想要解压的地方我本地解压到D:\Program Series\Tools\Apache-maven这个路径下3.然后在配置maven的环境变量:MAVEN_HOME D:\Program Series\Tools\Apache-maven\3.2.5 PATH %MAVEN_HOME%bin配置好以后环境变量以后,打开cmd窗口,输入mvn -v,如果出现以下内容就表示安装成功。
4.然后我们给maven添加本地的仓库地址解压后的maven目录下找到conf目录,其中就会有一个setting.xml文件我本地的地址是D:\Program Series\Tools\Apache-maven\3.2.5\conf然后通过编辑器找到第53行,把注释去掉,修改成自己想要设置的本地仓库地址就可以了。
我本地设置在maven的安装目录同级目录下mvn文件夹的名字可以随便取,但是一定要确保设置的仓库地址是有效的地址,因为maven 是不会自动创建这个mvn文件夹的。
5.实验一下刚才做的事情产生作用没有,控制台输入:mvnhelp:system如果没有任何问题,执行完该命令之后,在D:\maven\repository下面就会多出很多文件,这些文件就是maven从中央仓库下载到本地仓库的文件,maven已经开始为我们工作了。
Maven的安装配置和本地仓库地址的配置就已经结束了。
国内较快的maven镜像国内连接maven官方的仓库更新依赖库,网速一般很慢,收集一些国内快速的maven仓库镜像以备用。
====================国内OSChina提供的镜像,非常不错===================<mirror><id>CN</id><name>OSChina Central</name><url>/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror>========================================================OSChina Maven 库使用帮助==================其他maven仓库镜像==========================<mirror><id>repo2</id><mirrorOf>central</mirrorOf><name>Human Readable Name for this Mirror.</name><url>/maven2/</url></mirror><mirror><id>net-cn</id><mirrorOf>central</mirrorOf><name>Human Readable Name for this Mirror.</name><url>/content/groups/public/</url></mirror><mirror><id>ui</id><mirrorOf>central</mirrorOf><name>Human Readable Name for this Mirror.</name><url>/maven2/</url></mirror><mirror><id>ibiblio</id><mirrorOf>central</mirrorOf><name>Human Readable Name for this Mirror.</name><url>/pub/mirrors/maven2/</url></mirror><mirror><id>jboss-public-repository-group</id><mirrorOf>central</mirrorOf><name>JBoss Public Repository Group</name><url>/nexus/content/groups/public</url></mirror><mirror><id>JBossJBPM</id><mirrorOf>central</mirrorOf><name>JBossJBPM Repository</name><url>https:///nexus/content/repositories/releases/</url> </mirror>-------------------------spring maven--------------------------------/release/---------------------------------------------------------------------/content/repositories/central//nexus/content/groups/Koala-release//content/groups/public//maven2/。
Maven常⽤命令及其作⽤、常见问题、常⽤命令使⽤场景举例⼀、Maven常⽤命令及其作⽤1、 maven clean:对项⽬进⾏清理,删除target⽬录下编译的内容2、 maven compile:编译项⽬源代码3、 maven test:对项⽬进⾏运⾏测试4、 maven packet:打包⽂件并存放到项⽬的target⽬录下,打包好的⽂件通常都是编译后的class⽂件5、 maven install:在本地仓库⽣成仓库的安装包,可供其他项⽬引⽤,同时打包后的⽂件放到项⽬的target⽬录下⼆、常⽤命令使⽤场景举例1、mvn clean package依次执⾏了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段package命令完成了项⽬编译、单元测试、打包功能,但没有把打好的可执⾏jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库2、mvn clean install依次执⾏了clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8个阶段install命令完成了项⽬编译、单元测试、打包功能,同时把打好的可执⾏jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库3、mvn clean deploy依次执⾏了clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy等9个阶段deploy命令完成了项⽬编译、单元测试、打包功能,同时把打好的可执⾏jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库三、常见问题(⼀)mvn clean install 和 mvn install 的区别1、根据maven在执⾏⼀个⽣命周期命令时,理论上讲,不做mvn install 得到的jar包应该是最新的,除⾮使⽤其他⽅式修改jar包的内容,但没有修改源代码2、平时可以使⽤mvn install ,不使⽤clean会节省时间,但是最保险的⽅式还是mvn clean install,这样可以⽣成最新的jar包或者其他包(⼆)maven两种跳过单元测试⽅法的区别1、 mvn package -Dmaven.test.skip=true不但跳过了单元测试的运⾏,同时也跳过了测试代码的编译2、 mvn package -DskipTests跳过单元测试,但是会继续编译。
Maven使用常见问题整理1、更新eclipse的classpath加入新依赖1、在dependencyManagement里面加入包括版本在内的依赖信息,如:<dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId><version>1.6.2</version></dependency>2、在同级的dependencies节点里面加入该依赖,如:<dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId></dependency>3、使用mvn eclipse:clean删除当前的工程配置文件,并用mvn eclipse:eclipse重新生成。
4、导入或刷新该eclipse工程。
2、工程配置未使用pom.xml更新问题:Project configuration is not up-to-date with pom.xml导入maven工程后,出现如下错误:Description Resource Path Location TypeProject configuration is not up-to-date with pom.xml. Run project configuration update rdc line 1 Maven Configuration Problem解决办法就是:右键项目,【Maven】--》【Update Project Configuration...】即可。
3、如何修改默认GBK的资源过滤Using platform encoding (GBK actually) to copy filtered resources需要指定字符集:<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>2.2</version><configuration><encoding>UTF-8</encoding></configuration></plugin>4、不支持范型的JDK版本问题maven打包时始终出现TripApplyAction.java:[267,6]-source 1.3中不支持泛型(请使用-source 5或更高版本以启用泛型)Map<String, Object> map = new HashMap<String, Object>();解决方法,指定JDK版本:在pom.xml文件中加入下一面一段语句来指定所用的版本,尽管在eclipse中配置了正确的“Build Path”:<build><plugins><plugin><artifactId>maven-compiler-plugin</artifactId><configuration><target>1.5</target><source>1.5</source><encoding>UTF-8</encoding></configuration></plugin></plugins></build>重新运行mvn clean eclipse:eclipse -Dmaven.test.skip=true,接着mvn package,问题解决。
Ideal 中 Maven Clean 的实现方法一、概述Maven 是一个构建工具,它可以管理项目的构建过程、依赖关系和项目报告等。
在使用 Maven 进行项目构建时,经常会用到 clean 命令来清理项目的目录。
本文将介绍在 Ideal 中如何实现 Maven Clean 的方法。
二、配置 Maven Clean 插件1. 在 IDE 中打开项目打开 IDE(如IntelliJ IDEA),然后选择要清理的项目。
2. 打开 Maven 配置文件在项目中找到 pom.xml 文件,这是 Maven 的配置文件。
点击打开pom.xml 文件,即可进行 Maven 的配置。
3. 添加 Clean 插件在 pom.xml 文件中,找到 <build> 标签,然后在其中添加 clean 插件的配置:```xml<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId> <artifactId>maven-clean-plugin</artifactId><version>3.1.0</version></plugin></plugins></build>```以上配置添加了 Maven Clean 插件的依赖,使得在执行 Maven Clean 命令时,能够正确地清理项目目录。
三、执行 Maven Clean1. 打开终端在 IDE 的终端中,输入以下命令执行 Maven Clean:```shellmvn clean```2. 查看执行结果Maven Clean 命令执行完成后,可以在终端中查看执行结果。
通常情况下,会出现类似以下内容的输出:```shell[INFO] Scanning for projects...[INFO][INFO] -----------------<.example:my-project >----------------- [INFO] Building my-project 1.0[INFO] --------------------------------[ jar ]---------------------------------[INFO][INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ my-project ---[INFO] Deleting /Users/username/Workspace/my-project/target [INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 0.702 s[INFO] Finished at: 2022-01-01T00:00:00+08:00[INFO] ------------------------------------------------------------------------```以上输出显示了 Maven Clean 命令的执行过程,其中包括了清理目录的操作以及执行结果的信息。
JAVA学习之maven的使⽤场景:最近使⽤springboot写⼀些⼩demo,发现到处都要使⽤maven,更离不开其中的pom.xml⽂件,所以这⾥对maven的常规使⽤作出⼀个整理。
⽂章结构:1. 安装配置maven环境2. maven⽬录结构3. HelloMaven4. 常⽤构建命令5. 使⽤archetype插件⾃动建⽴⽬录6. 坐标&仓库7. ⽣命周期&插件的使⽤8. pom.xml常⽤标签介绍9. maven依赖(范围、传递、冲突)10. 聚合&继承正⽂:1. 安装配置maven环境⾸先,在中下载maven组件。
进⼊官⽹后,在左边菜单找到Download选项,点击进⼊Download页⾯。
当然,我们⾸先要保证JDK安装好。
接下来,要在本地配置好maven的系统环境变量,新建⼀个maven_home的变量,然后在系统变量的path后⾯追加这个maven_home;接着,我们测试下maven安装成功没有(注意,⼀般我们都先安装好JDK,因为maven的命令应该是要借助jdk的):如图所⽰,显⽰了maven的版本信息跟jdk的版本信息,当然,我们也可以使⽤echo 查看下系统环境变量:到这⾥,我们对maven的环境配置就完成了。
其实这是第⼀种,我们下载jar包的形式,不过本⼈是使⽤第⼆种,直接安装eclipse(包含maven)的版本即可,⽐如我安装的版本即是⾃带的maven;接下来只需要配置好本地的系统变量即可。
诶,如果我们想要改变maven的版本呢,我们可以在eclipse当中的preferences当中改变:2. maven项⽬的⽬录结构先在这⾥插⼊⼀点个⼈对maven的理解,我们之前每个项⽬都需要有⾃⼰的jar包,但是这么多jar包很多有相同的,⽽这些jar包⼜是基于项⽬存放的,如果我们跨越项⽬这⼀层,统⼀管理jar包呢,这样不就可以节约很多空间和时间。
maven 编译顺序
Maven的编译顺序主要由项目中的依赖关系和插件执行顺序决定。
在pom.xml 中,可以使用<build>标签来配置编译顺序。
具体来说,你可以设置<plugins>标签中的插件执行顺序,或者使用<resources>标签来指定资源文件的编译顺序。
此外,Maven的生命周期分为三个阶段:编译、测试和打包。
它们的顺序一般是:compile -> test -> package。
在具体的项目中,编译顺序可能会因为模块间的依赖关系而有所不同。
例如,如果一个模块依赖于另一个模块,那么依赖的模块会被优先编译。
总的来说,Maven的编译顺序是一个复杂的过程,它会根据项目中的依赖关系和配置来自动确定。
如果你需要更详细的控制,可能需要深入研究Maven的配置和生命周期。
一常用命令
1 版本查看mvn -version
2 根据模板建立项目mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app
com.mycompany.app 默认包名my-app 项目名称
3. 项目根路径下打包mvn package
4. 项目根路径下编译mvn compile
5. 项目根路径下执行测试mvn test
6. 项目根路径下编译测试mvn test-compile
7. 运行打开下的类文件java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App
8. 项目根路径下运行命令mvn eclipse:eclipse 生成两个文件:.classpath和.project
9. install阶段执行一个目标,把你项目的构件安装到你的本地仓库。
10. mvn exec:java -Dexec.mainClass=org.sonatype.mavenbook.weather.Main运行java类和脚本1.1mvn dependency:resolve 打印依赖目标
12. mvn dependency:tree 打印出依赖目标树
13. mvn install -X 查看依赖踪迹
14. mvn install assembly:assembly 构建装配的命令
二构建模板以PPP.framework为例
1.把一个Maven项目创建成一个archetype模板
打开cmd 找到项目路径,在项目路径下执行
mvn archetype:create-from-project
2. 安装maven模板到本地库
项目的target\generated-sources\archetype路径下执行mvn clean install
3. 部署maven模板到远程库
需要在target\generated-sources\archetype目录下pom.xml配置
<distributionManagement>
<repository>
<id>maven-repo</id>
<name>maven-repo-releases</name>
<url>http://192.168.50.127/artifactory/libs-release-local</url>
</repository>
<snapshotRepository>
<id>maven-repo</id>
<name>maven-repo-snapshots</name>
<url>http://192.168.50.127/artifactory/libs-snapshot-local</url>
</snapshotRepository>
</distributionManagement>
在maven安装路径和maven库下的settings.xml配置相应的
<server>
<id>maven-repo</id>
<username>yuebing.zhang</username>
<password>pera2008</password>
</server>
<server>
<id>maven-repo</id>
<username>yuebing.zhang</username>
<password>pera2008</password>
</server>
和
<repository>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
<id>maven-repo</id>
<name>maven-repo-releases</name>
<url>http://192.168.50.127/artifactory/libs-release-local</url>
</repository>
<repository>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
<id>maven-repo</id>
<name>maven-repo-snapshots</name>
<url>http://192.168.50.127/artifactory/libs-snapshot-local</url>
</repository>
然后执行mvn deploy
3 根据制作好的模板执行命令建立项目
cmd 命令式:
mvn archetype:generate -DarchetypeGroupId=com.pera.ppp -DarchetypeVersion=1.0-SNAPSHOT -DarchetypeArtifactId=ppp.framework-archetype
如果报The desired archetype does not exist错误把
<mirrorOf>maven-repo</mirrorOf> *号改成maven-repo
eclipse方式配置如下
<distributionManagement>
<snapshotRepository>
<id>maven-repo</id>
<name>maven-repo-snapshots</name>
<url>http://192.168.50.127/artifactory/libs-snapshot-local</url> </snapshotRepository>
</distributionManagement>。