博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Maven使用详解
阅读量:5987 次
发布时间:2019-06-20

本文共 3228 字,大约阅读时间需要 10 分钟。

创建maven project和maven module

  • 创建maven project:
  1. Eclipse->New Maven project
  2. 在弹出界面中不要选择“Create a simple project”(这样就可以使用archetype来创建项目)
  3. 使用默认的Archetype (quickstart) 

点击完成Finsh创建完毕

此时会有一大堆东西:

进入文件目录把src文件夹删除掉,parent project不需要代码,只是用来管理统一jar包依赖的一个项目

删完之后变成这样,有用的就是pom.xml

 

修改pom.xml:

<packaging>pom</packaging> 中的jar 改成pom

pom是一个聚合工程,既父工程,可以理解成pom工程师用于管理其余子工程的jar包的工程,并且在实际编译发布打包中都有很大的方便

改完后可能会报错,选择项目右键maven->update project即可

 

  • 创建maven module project

1.选中刚建的父项目,在弹出菜单中点击 New -> Maven Module;

 

2.点击next ,默认选中的是quickstart,什么都不要修改直接继续next

3.点击Finsh即创建完毕

 

这样一个子项目就创建完成了,在文件系统中,子项目会建在父项目的目录中。在父目录中运行mvn test等命令,所有的子项目都会按顺序执行。

细心一点的人,可能会发现,通过这个步骤创建子项目的同时,会修改父项目的pom.xml,增加了类似下面的信息:

  
      
child01
 

 

4.接下来就是优化配置了:

打开子项目的pom.xml可以删除groupid和versionid

甚至Eclipse都在groupid和versionid上给出了黄色警告

鼠标移上去发现提示:Version is duplicate of parent version(版本号已经在父项目中定义过了)

所以子项目的groupid和versionid都可以删掉,下方的url 和properties父项目中也有一模一样的,也可删除

 子项目的pom还可以继续优化,<dependencyManagement> 标签  可以进一步优化子pom中的内容,在文章后面的各类标签中有详解

总之,parent 和module 如果是父子关系的话,就是继承关系,可以极大的优化项目结构和pom的内容

 

groupid和artifactId如何填写

groupid和artifactId被统称为“坐标”是为了保证项目唯一性而提出的,如果你要把你项目弄到maven本地仓库去,你想要找到你的项目就必须根据这两个id去查找。

  groupId一般分为多个段,这里我只说两段,第一段为域,第二段为公司名称。域又分为org、com、cn等等许多,其中org为非营利组织,com为商业组织。举个apache公司的tomcat项目例子:这个项目的groupId是org.apache,它的域是org(因为tomcat是非营利项目),公司名称是apache,artigactId是tomcat。
  比如我创建一个项目,我一般会将groupId设置为cn.kevin,cn表示域为中国,kevin是我个人喜欢的代号,artifactId设置为testPro,表示你这个项目的名称是testPro,依照这个设置,你的包结构最好是cn.snowin.testPro打头的,如果有个UserDao,它的全路径就是cn.kevin.testPro.dao.UserDao

 

各类标签:

  • <optional>可选依赖

举例:projectA 依赖projectB,  projectB 依赖projectC时

projectB的pom.xml如下:

com.projectC
projectC
0.0.1-SNAPSHOT
true

当projectB的optional=true时, projectA中如果没有显式的引入projectC, 则projectA不依赖projectC, 即projectA可以自己选择是否依赖projectC,默认<optional>的值为false, 既子项目必须依赖

简单来说就是,ProjectB配置了optiona=true,就意味着ProjectB的子项目不能依赖ProjectA,要依赖只能手动依赖

 

  • <exclusion>排除依赖

传递性依赖会给项目隐式地引入很多依赖,这极大简化了项目依赖的管理,但是有些时候这种特性也会带来问题。

例如,项目A依赖B,而这个B依赖了C,那么这个C就会成为A的传递性依赖,而C由于是不稳定版本SNAPSHOT,会直接影响到当前的项目A。这时就需要排除掉A对C的依赖。这就是排除依赖。

A的pom.xml:

com.projectB
project-B
1.0.0
com.projectC
project-C

 

  • <dependencyManagement> 统一管理依赖

dependencyManagement的作用其实相当于一个对所依赖jar包进行版本管理的管理器

举例:B继承自A,A中集中管理Jar版本,B中就无需再声明version,直接从A中继承。如果有C,D继承A,也无需声明version。若需要升级某个Jar版本,也只需要在A中修改一次即可,无需B,C,D一个个项目改过来。

若子项目中某个jar声明了version,这个jar就不会从dependencyManagement中继承,而是按照声明的来,也很灵活

父项目A 的pom.xml:

2.5
4.10.3
joda-time
joda-time
${joda-time.version}

子项目B的pom.xml:

joda-time
joda-time
<--!从父项目继承version,不用再声明version-->

 

 

 

 

 

遇到的问题:

pom.xml报错:Missing artifact joda-time:joda-time:jar:4.12

其实原因很简单,就是joda-time.jar这个jar包版本没到4.12,最高版本也就2.几,所以无法正常下载,version改成2.5即可正常下载

 

 

Maven在eclipse下安装配置:

转载于:https://www.cnblogs.com/kevinWu7/p/10163472.html

你可能感兴趣的文章
SpringMvc+ibaits 文件上传的列子
查看>>
个帖子学会Android开发四大组件
查看>>
Windows安装和使用zookeeper
查看>>
java.lang.ClassNotFoundException: org.junit.Before
查看>>
字符串相似度
查看>>
ios app 推送功能 JPush极光推送的使用
查看>>
回答技巧
查看>>
Guava学习笔记-简化观察者模式的实现
查看>>
Unix philosophy ---取自The art of unix programming
查看>>
css背景自适应分辨率大小
查看>>
2014.03.18 入职第二天
查看>>
Linux查看物理CPU个数、核数、逻辑CPU个数
查看>>
jre和jdk所有版本下载地址
查看>>
潜流笔记-汇率动荡,劫难为何而来?
查看>>
linux定时备份mysql并同步到其它服务器
查看>>
必看!互联网开发模式的经验之谈
查看>>
自制tunnel口建虚拟专网实验
查看>>
指针与字符串
查看>>
sleep和wait的区别
查看>>
Lanboot实现不开机复制别人电脑文件
查看>>