浅谈Java web框架课程中Maven的教学内容和设计

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:h597144280
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:Maven作为一个项目管理工具,主要用于基于Java平台的项目构建。现在很多学校也开设了基于框架的Java Web课程,但很少会单独开设Maven课程。该文列举了在框架课程中直接使用Maven来构建项目面临的问题,提出了改进措施,并介绍了具体的教学内容和实施过程。
  关键词:Java web框架课程;Maven
  1 引言
  Maven作为一个项目管理工具,主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。在基于框架的Java web项目中不可避免地要使用大量的第三方jar包,需要使用Maven进行项目构建和依赖管理。而高职院校Java服务端开发课程可能会包含Java web、SSM、Spring boot等课程,但一般不会单独开设Maven课程。框架课程中往往就直接使用Maven来构建项目和管理依赖,这会导致学生只是知道这样构建,却不知道各种命令和配置的含义,在以后独立构建项目的时候会遇到很多困难。本人通过教学经验,浅谈Maven如何融入框架课程教学中,以及教学内容和设计。
  2 在框架课程中直接使用Maven来构建项目面临的主要问题
  由于院校一般不会单独开设Maven课程,在框架课程中往往直接使用Maven来构建项目。使用之前并不会对Maven的基本概念、规则、命令、配置等做详细的讲解。这会导致课程开展过程中遇到下面一些问题:
  1) 由于学生缺乏对Maven最基本规则的认识,对Maven生命周期和基本命令不了解。在集成开发环境下直接配置和使用maven构建项目时,只能跟随步骤操作,不理解每步操作的原因,甚至不知道为什么要这样操作,也不知道每种操作会产生怎样的结果和输出。特别是在集成开发环境中可视化的操作下,一旦遇到问题,不知道如何解决。
  2) 管理项目依赖时,往往会把需要的依赖配置直接给学生,学生直接把POM文件拿来使用。而某个框架项目所需的依赖配置并不具有唯一性,可能多种不同的配置方式均可以构建成功。学生缺少对于Maven依赖管理基本规则的理解,不清楚依赖传递和依赖调解,更不清楚何时需要排除依赖,导致学生并不清楚某一框架究竟需要哪些依赖,也不能理解其他解决方案。在学生以后的学习和工作中,经常会发现他们会在网上寻找某些框架的依赖配置,如果能用就直接使用,如果不能使用,也不知道问题在哪里。
  3) 过于依赖集成开发环境,不同开发环境中配置和使用Maven存在差异,不同的Maven版本和集成開发环境版本也需要合理的搭配。由于不清楚Maven工程的基本结构和构建过程,在升级或者更换开发环境时会觉得很困难。学生往往会跟随网上的视频或文章来进行配置,但一旦最后出错,不知道原因,也无法解决。
  4) Maven只是框架开发中使用的构建工具,不是框架开发课程的核心。但教学过程中,特别是初期,由于学生使用Maven构建项目出现问题,无法运行出结果,这样一来,本来应该用在框架技术本身的时间反而减少了,大量时间用来解决Maven构建项目时出现的问题。
  3 教学改进措施
  3.1 将Maven的切入时机延后
  在框架课程开始不要使用Maven来构建项目,以SSM课程为例,在讲解3个框架和进行技能训练时,还是使用传统的手动方式来创建工程以及维护第三方Jar包。这样可以让学生清楚地了解每种框架需要哪些类库,框架之间的整合又需要哪些类库,而且还能切实地感受到手动维护项目依赖的难度,体会其中可能发生的版本冲突。
  在框架技术内容全部结束之后,再引入Maven,沿用之前的项目代码,换成Maven方式进行构建。这样可以更有针对性的介绍Maven,便于学生将传统方式的工程和Maven工程结构进行比较。学生也能体会使用Maven管理依赖的优势,也更能读懂POM文件中的依赖基本配置。可以让学生更好地体会Maven构建方式的不同和优势。
  3.2 强化Maven基本命令和命令行下的构建
  开始引入Maven时不要在集成开发环境下配置和使用,而是让学生在命令行中使用命令手动创建、编译、测试、打包、运行Maven Java项目和Java web项目。通过这种方式让学生熟悉Maven工程的结构组织,包括源码结构、输出文件夹结构、POM文件基本结构。在使用命令构建项目的过程中,熟悉基本命令的作用,了解Maven生命周期的主要阶段,每个主要阶段做了什么事情。
  学生熟悉Maven工程基本结构和命令之后,很容易就可以在集成开发环境下创建Maven工程,也更容易理解各种maven工具菜单的功能。如果在集成开发环境下构建出现问题,可以很容易地切换到命令行下进行构建。
  3.3 着重讲解Maven依赖管理
  Maven的一大功能就是管理依赖,学生必须理解Maven的依赖配置,了解依赖的几种范围,理解依赖的传递性,以及存在多条依赖路径时,Maven如何选择。更进一步的,还需要理解什么情况下会产生依赖冲突,何时需要排除依赖,依赖版本管理和依赖优化。这些基本概念均可以在实践操作中通过修改POM来进行测试。学生通过这部分内容的学习,就能够看懂常规的依赖配置,还可以很好地进行修改和优化。
  3.4 教会学生按需搜索依赖
  工作中不可避免的需要自己去查找和使用某些依赖,这时不能完全依靠网上的文章,需要自己去仓库中搜索依赖坐标,搜索的同时也要能看懂该依赖引入的其他传递依赖。教学过程中要布置任务让学生自行寻找和配置依赖,并合理地去处理传递依赖可能带来的冲突。
  4 具体教学内容和实施过程
  实际教学中是将Maven内容安排在SSM课程的后续实训课程中,在实训开始阶段讲解和练习Maven。将SSM课程中几个典型案例使用Maven方式进行构建,先在命令行下使用命令构建,熟悉之后再使用集成开发环境。在技能训练过程中穿插Maven基本知识点和配置的讲解。   Maven学习结束之后的实训项目就完全使用Maven方式进行构建了。Maven学习内容安排如下。
  4.1 Maven安装和配置
  学习的第一步是下载和配置Maven,学生需要按照文档要求在个人电脑上配置Maven相关的环境变量、本地仓库路径、镜像地址等,并进行测试。
  4.2 使用Maven创建和运行Java项目
  接下来就是Maven的第一阶段学习,以文档和小项目形式教授下面内容:
  1) 手动创建和运行Maven Java项目
  第一个例子将手动创建、编译、测试、打包、运行一个Maven Java项目。项目源码十分简单,只需要添加一个junit依赖。重点放在Maven项目的结构、pom.xml文件基本结构,maven的compile、package、clean等命令的使用上。
  2) 使用archetype插件生成项目骨架
  第二个例子使用archetype插件来自动生成一个Java项目骨架,该例子会访问数据库,进行数据查询。例子将展示代码以外的资源文件放在什么位置,如何访问资源文件,编译后的输出文件夹结构。还会教学生如何搜索和添加项目需要的依赖。
  3) 一个Spring Mybatis的例子
  该例子将使用SSM课程中一个转账的项目代码,将其使用Maven方式进行构建。文档只会给出所需的依赖的名称截图,让学生自行搜索依赖来补全POM文件。此例还会强化学生配置文件等资源的存放,以及访问路径写法。
  4) Maven生命周期
  这部分内容通过文档形式让学生学习Maven生命周期和其中的主要阶段,也让学生观察和理解之前使用的命令执行了哪些操作。
  5) Maven坐标和依赖
  这部分内容通過文档让学生学习Maven的依赖配置,依赖范围,依赖传递,可选依赖,排除依赖,依赖版本管理,优化依赖。学习过程不仅仅是了解各种规则,还要通过修改前面案例的POM文件进行各种测试,体会不同的依赖配置导致的结果之间的区别。
  4.3 使用Maven创建和部署web项目
  在会使用Maven项目构建Java工程,理解了Maven的基本配置和规则之后,就可以使用Maven方式构建web项目。这部分的学习有几个重点:
  1) 了解Maven web项目的基本结构,POM文件中打包方式的区别
  2) 打包项目,知道哪些依赖会被打包,哪些不会,理解provided依赖范围,会将项目部署到本地Tomcat。
  3) 了解Jetty插件和Tomcat7插件的配置,会启动服务器,访问web项目。
  4.4 在Eclipse中使用Maven
  这部分内容主要是在Eclipse里配置Maven,学会在Eclipse里创建Maven项目,会使用Eclipse提供的各种Maven功能菜单构建项目。由于集成开发环境里的Maven项目和手动创建的Maven项目有一定的区别,功能菜单和Maven命令也有一定差别,需要对比一下两者的异同。但是学生有了前面手动构建的基础之后,在集成环境下使用会比较容易。
  5 结束语
  本文探讨了Java web框架课程中Maven相关内容的教学设计,提出了改进措施和实施方案。
  参考文献:
  [1] 许晓斌.Maven实战[M].北京:机械工业出版社,2011.
  [2] 陈雄华,林开雄,文建国.精通Spring 4.x企业应用开发实战[M]. 北京:电子工业出版社,2017.
  [3] 黑马程序员.JavaEE企业级应用开发教程(Spring Spring MVC MyBatis)[M] 北京:人民邮电出版社,2017.
  [4] 陈雄华,林开雄,文建国.精通Spring 4.x企业应用开发实战[M]. 北京:电子工业出版社,2017.
  [5] 杨开振.深入浅出Spring[M].北京:人民邮电出版社,2018.
  [6] 克雷格·沃斯,丁雪丰.Spring Boot实战[M].北京:人民邮电出版社,2016.
  [7] 黑马程序员.Spring boot企业级开发教程[M]. 北京:人民邮电出版社,2019.
  【通联编辑:光文玲】
其他文献
摘要:生物多样性是群落生态学中的重要概念,α多样性指数普遍应用于生态学科学研究中。α多样性指数的计算与相关图像绘制,在数据处理与分析阶段是非常必要的。为获取α多样性指数相关数据信息,从规范的“物种-样地”二维矩阵初始数据格式出发,运用Python编程语言开发程序并通过测试,实现较高整合程度与较快计算速度,协助后续研究过程。  关键词:植物群落;α多样性;多样性指数;Python语言;程序设计  A
摘要:大数据时代,各类影视资源纷纷涌现,“信息过载”问题在影视行业愈发凸显,有效的电影推荐算法是解决这个问题的关键。本文首先总结了电影推荐的主流推荐算法,主要有协同过滤、基于内容的推荐和混合推荐三类算法,然后比较分析了几种推荐算法的优缺点。最后,针对推荐算法的发展方向,又对基于上下文的推荐算法进行了简单的介绍。  关键词:电影推荐;协同过滤;基于内容的推荐;混合推荐  Abstract:In th
众所周知,目前国内处于一个快速、重要的现代化社会建设进程当中,各种先进的技术开始进入到广大人民群众的视野当中,包含云计算、物联网和大数据技术等等,尽管目前这些技术已经在实际的社会发展过程中进行运用,并且取得了一定的效果,但是这些技术的价值和作用并未完全开发出来,在后续的发展过程中仍旧需要技术工作人员对其进行深入的研究和探索,使其各方面的作用和价值都能够体现出来,并且在实际的工作中进行运用,提升总体
摘要:随着信息技术和互联网技术的发展,编程思维和编程能力的培养引起社会的关注,Scratch的出现降低了编程教育的门槛,使得少儿编程迅速兴起。为了进一步推广普及少儿编程教育,该文基于Python设计开发一个线上教育平台,系统采用Django框架,利用CBV的方式组织视图类以及项目的封装,使用MySql为后台数据库,实现在线直播、视频点播、师生在线互动等功能,以期能推动编程教育的推广和发展。  关键
摘要:本文提出一种变电站设备全景智能监控系统的优化方法,该方法使得系统具有全息感知,泛在互联,自主预警,高效互动等特征,能够全面提升设备状态和运检业务的智能化水平。满足社会用电需求量增长迅速,用电设备不断增多的场景,解决传统电网设备健康判断方法难以有效解决系统数据贯通,监测装置在线率低及综合分析能力差等问题。  关键词:全景监视;系统设计  Abstract:With the rapid grow
摘要:该文结合物联网技术与单片机技术设计一种智能鱼缸检测系统,系统以单片机为控制核心,综合利用单片机和物联网技术,通过相关传感器的应用,实现鱼缸智能调节水温、智能换水、智能净化水、智能加氧等功能;另外系统中的通信模块使得用户可以通过手机App远程观测鱼缸内数据,为观赏养鱼的人们提供了极大便利。  关键词:单片机;智能控制;物联网  中图分类号:TP3 文献标识码:A  文章编号:1009-30
摘要:由于传统朴素算法求解无向图的双连通分量时间花费过高,为了在线性时间内求出双连通分量并得到极大连通子图。文章对Tarjan算法的思想以及具体实现做出了详细的分析。同时结合具体实例,验证了算法中割点的判定条件以及回溯数组初始化的有效性和适用性。最后,给出了Tarjan算法在求解极大连通子图过程中,结点和栈空间状态转化图。  关键词:极大连通子图;双连通分量;Tarjan算法  Abstract:
摘要:随着计算机科学的进步,其应用领域越发广泛。在当前时代背景下,互联网与计算机科学领域的融合推动了人工智能技术的发展。人工智能技术作为当下社会发展的热点领域,正不断地转变传统的生产生活方式,人类正在迎来以人工智能技术为代表的第四次工业革命。在这样的背景下,高职计算机课程教学模式应当加快改革转型,适应人工智能时代的到来,为社会输送更多人工智能专业领域的人才,更好地推动技术进步。基于此,本文针对人工
摘要:在排序问题(Sequencing Program)中,当工序道数M≥3时,计算总加工时间常用的方法便是绘制时标流线图,但在教学过程中手工绘图相对烦琐,因此,笔者开发的网络规划仿真模块不仅实现了时标流线图的自动绘制,而且形象直观,经教学实践,效果良好。  关键词:排序问题;工期;时标流线图;模拟仿真  Abstract: During the sorting problem (sequenci
摘要:现阶段软件企业在实际落实项目开发相关工作的过程中往往存在一定程度的风险,而为了使所开发的软件能够充分发挥应用价值,并且实现顺利盈利,在充分考虑软件自身生命周期的基础之上,在软件开发的过程中,落实动态风险管理的相关工作就显得十分有必要。本次研究工作的开展过程中,文章就以软件的不同生命周期为基础,探讨了需求分析阶段、软件设计阶段、软件编码阶段、软件集成和测试阶段潜在的风险,并针对上述风险提出了相