关于maven工程编译版本的问题

        今天写代码的时候遇到了一些小问题,经过一下午的各种捯饬,算是解决了,在这里我贴出来,供大家参考和讨论,如果有什么不对的地方,还请各位大神多多指正,谢谢...

问题一:Maven项目中父工程已经引入了编译版本,像这样:

 

请问子项目的pom文件中还需要写这些东西吗?

答:不需要!,原因往下看.....

        关于maven学习的时候,我们不得不了解的就是它的聚合与继承。

为什么我的项目maven update project之后还是显示1.4?还报错

     聚合

    随着技术的飞速发展和各类用户对软件的要求越来越高,软件本身也变得越来越复杂,然后软件设计人员开始采用各种方式进行开发,于是就有了我们的分层架构、分模块开发,来提高代码的清晰和重用。

    比如说,现在需要做一个物流管理的项目,它包含了很多的模块,例如用户模块、订单信息模块等等。按照传统的开发方式,既然是一个项目,那就创建呗,创建了一个maven项目,里面分模块分为各种包/文件夹,各种配置文件、java文件、前端代码都往这一个项目里面怼,怼完之后发现编写代码的时候还得从一大堆的文件中找自己要编写的代码,各种文件夹各种包一顿点,而且测试的时候运行一下服务器,速度极慢。这无疑会影响自己的睡眠质量(开个玩笑),意思就是管理起来很不方便。

    于是乎,我们采用了分模块,将项目分成一个父工程和若干个子模块,像这样(举个橘[li]子):


    如图所示,一个项目被分成了若干个子模块/项目,分别管理不同的区域,有不同的任务。例如bos_domain模块和crm_domain模块分别是用来管理实体类的,bos_management项目是用来负责管理模块的,crm_management项目是用来管理用户信息的。每个某块是相对独立的,所以说可以进行单独的操作,包括测试等等。怎么样这么一来,业务是不是一下子清晰了起来呢。然而这只是把项目进行了简单的拆分,当然,独立是相对于其他子模块的,具体还要向一个整体靠拢,即所说的聚合。那么怎么实现聚合呢?

    1.父工程配置:

  <modelVersion>4.0.0</modelVersion>
  <groupId>cn.boom.maven</groupId>
  <artifactId>common_parent</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>common_parent</name>

    2.子工程配置:

  <modelVersion>4.0.0</modelVersion>
  <parent>
	<groupId>cn.boom.maven</groupId>
	<artifactId>common_parent</artifactId>
	<version>0.0.1-SNAPSHOT</version>
  </parent>

注意版本号打包方式,父工程要用pom的打包方式

继承

    来来来,复习一下基础知识。java语言的三大特性是什么?没错(假装你都回答出来了),就是封装、多态、继承

接下来我将要讲的这个继承(maven),你也可以参考一下上面那个继承(java),当然你也可以参考一下王建霖(父亲)和王四葱(儿子)的关系。maven的继承也是一样的,比如说,父工程有已经依赖了spring的相关jar包,name子工程也需要依赖这些jar包怎么办呢?这就好比四葱需要一笔钱去卖一副雷蛇,他没钱,怎么办?当然是找他爹要啊,都父子关系了,客气啥,你爹的还不就是你的。那么在maven工程中也是一样的,需要依赖先找自己,自己没有,直接去找父项目,有就拿来用,没有的话再导入。当然,如果父工程中有这个依赖,你还要再在子项目里面引用一个一样的,那也不是不可以,只不过有点累赘了。

    另外,上面那张图不是说了有两个管理实体类的项目嘛,它的里边没有业务代码,只是用来存储实体类的,它的打包方式为jar,别的项目可如果有用到它里面的实体类的话,直接进行依赖就行了:    

<dependencies>
  	<dependency>
  		<groupId>cn.boom.maven</groupId>
  		<artifactId>crm_domain</artifactId>
  		<version>0.0.1-SNAPSHOT</version>
  	</dependency>
  	<dependency>
  		<groupId>cn.boom.maven</groupId>
  		<artifactId>bos_domain</artifactId>
  		<version>0.0.1-SNAPSHOT</version>
  	</dependency>
  </dependencies>
   



   

问题二:从父项目的配置文件可以看出,我已经将maven的编译版本设置成了1.8了,但是,子项目的编译版本显示的却是1.4(有点低了你发现了没),而且还报错!!!

        

    还好手动改成1.7之后不报错了

        

    如果这么简单就好了,执行maven-updateproject之后又成了1.4.。。。

   解决:原因是因为我的eclipse版本太低(为了运行项目的时候不卡,下了一个老版本的),上面支持的最高编译版本是到1.7,而我在pom文件里边设置的的是1.8的版本,eclipse不知道1.8,所以自动忽略了我的版本配置,采用了默认的编译版本(1.4的版本),所以报错是正常的啦,1.4版本什么也不知道,超出它编译能力范围的东西当然会报错啦。就算是我手动导入了jdk1.8的类库,但是eclipse的能力有限,识别不了,引了也白搭。

这种情况的结局方案就是:

1. jdk的版本切换到1.7,如果你电脑上安装的是1.8的版本,修改pom文件就行了

             

2. 下载一个jdk8的插件

3. 果断下载一个高版本的eclipse,就什么都有了

     高版本好是好,就是感觉bug太多,不过用着的确方便。

就这吧,该睡了,又是两点多,希望各位大佬多提意见,我要学的还多着嘞...晚安,为了月薪过万

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值