如何把传统SmartGWT项目改成基于Maven的SmartGWT项目

来源:互联网 发布:第三帝国的兴亡 知乎 编辑:程序博客网 时间:2024/05/22 17:18

前提条件

  1. 一个未使用Maven管理的SmartGWT项目,下文中称为原始项目
  2. maven版本为3.1.0

操作流程

第一步 基于Maven创建一个SmartGWT项目

关于这一步的内容,我已经在我的另外一篇博客中有了详细的介绍,这里我就不再重复说明,而只是把地址贴出来,大家可以去看看。
这里写图片描述
点击上面图片或者点击这里进行跳转

这里有一些内容的补充:

  1. 在上文介绍的另外一篇介绍如何创建SmartGWT的博客中有一张图片如下所示
    这里写图片描述
    这是在设置要建立的Maven项目的坐标信息和模块信息。要注意的是上图中第1步中的Package:输入框。这里建议包名跟原始项目的包名保持统一;还有就是第2步的模块名称也跟原始项目保持统一。

第二步 根据原始项目进行改造

在上一步操作之后,已经得到了一个非常简单的SmartGWT项目了,这就是我们想要的,现在就要把一些原始项目里面的内容转移到新项目里面去。

依赖JAR包的设置

有一点比较苦恼的是,当项目大到一定的程度之后,依赖的JAR包会比较多,如果你刚好是原始项目框架的构建人员,那么祝贺你,你应该知道每一个JAR包都是谁家的,有什么作用,用的是哪个版本,这样你就可以推测出这个JAR包的Maven坐标。如果你只是一个普通开发人员的话,你不一定知道所有的JAR包及其版本,这个时候,你可以通过JAR包内的一些内容来猜测。

  1. 打开原始项目中依赖的JAR包,如下图所示:
    这里写图片描述
    打开文件可以看到如下内容,这就得到了这个JAR包的坐标信息
    这里写图片描述
  2. 如果上一步不能依赖文件的pom.xml文件,那么就只能去搜索了,有一些网站提供了Maven坐标的搜索,你只要输入一些相关的信息。
    点击打开搜索网站,或者点击如下图片
    这里写图片描述
    这里有必要了解的Maven知识是,一般来说,基于Maven管理的JAR包,包名一般是:groupId+artifactId。所以这也是一个可以参考的信息。

不一定能够确定所有的JAR包的坐标和版本,这时候只能通过其他方式来确定坐标,比如跟项目构建人员沟通。还有一种情况是,有一些JAR包基于一些原因,比如版权、历史原因等因素,也同样是不能在远程Maven仓库中下载到的,那么这个时候,就需要私服亮相了,如果你没有搭建私服,建议你搭建一个私服,因为搭建私服非常简单,而且很好用。如果你搭建了自己的私服,你就可以把一些不能确定的或者因为各种原因远程Maven仓库中没有的又或者是自己编写的一些包上传到私服上,这样就可以通过坐标来依赖这些包了。

源代码的改造

把原始项目的源代码复制到新项目中。我假设你的原始项目的文件结构跟我的一样,如果跟我的不一样,你可以参照着来修改。
原始项目的文件结构如下图所示:
这里写图片描述
新项目的文件结构如下所示:
这里写图片描述

  1. 在原始项目中,源文件放置在src之下,复制所有的源代码,粘贴到新项目中的源文件夹src/main/java
  2. 在原始项目中,测试的代码都放置在test之下,复制所有的测试代码,粘贴到新项目中的测试源文件夹src/test/java
  3. 原始项目中GWT的模块配置文件XXX.gwt.xml是放置在client包同一层结构,如下图所示:
    这里写图片描述
    在新项目中,模块配置文件建议不要跟资源文件放在一起了,而应该放到资源文件夹src/main/resource之下了,但是直接粘贴它放置进去也是不对的,而应该建立相同的文件深度。如下图所示:
    这里写图片描述
  4. 删除新项目中webapp下的全部文件,把原始项目中war结构下的所有文件复制到新项目中的webapp
    这里写图片描述
    这里写图片描述
  5. 删除classeslib文件夹,因为使用Maven管理项目,已经不用把依赖的JAR包放进项目里面了。
    这里写图片描述
  6. 检查GWT的首页是否发生了变化,如果发生了变化,请打开pom.xml文件中插件gwt-maven-plugin的配置进行修改。如下图所示:
    这里写图片描述
    这里写图片描述

到这里,一个基于Maven的SmartGWT的项目也就改造完了,但是并不是说就一定完成了,这要看你原始项目的情况。比如在首页index.jsp(你的不一定是这个),如果要运行SmartGWT代码,需要加入SmartGWT的一些js包,代码如下所示:

<script type="text/javascript">var isomorphicDir = "<模块名称>/sc/";</script><!--include the SC Core API--><script type="text/javascript" src='<模块名称>/sc/modules/ISC_Core.js?isc_version=11.0p_2016-09-13.js'></script><!--include SmartClient --><script type="text/javascript" src='<模块名称>/sc/modules/ISC_Foundation.js?isc_version=11.0p_2016-09-13.js'></script><script type="text/javascript" src='<模块名称>/sc/modules/ISC_Containers.js?isc_version=11.0p_2016-09-13.js'></script><script type="text/javascript" src='<模块名称>/sc/modules/ISC_Grids.js?isc_version=11.0p_2016-09-13.js'></script><script type="text/javascript" src='<模块名称>/sc/modules/ISC_Forms.js?isc_version=11.0p_2016-09-13.js'></script><script type="text/javascript" src='<模块名称>/sc/modules/ISC_RichTextEditor.js?isc_version=11.0p_2016-09-13.js'></script><script type="text/javascript" src='<模块名称>/sc/modules/ISC_DataBinding.js?isc_version=11.0p_2016-09-13.js'></script><script type="text/javascript" src='<模块名称>/sc/modules/ISC_Calendar.js?isc_version=11.0p_2016-09-13.js'></script><script type="text/javascript" src='<模块名称>/sc/modules/ISC_Drawing.js?isc_version=11.0p_2016-09-13.js'></script>

直接把代码加入到首页<body>元素的最下面,而且记得把<模块名称>缓存你的模块的名称。

相关知识点

  1. 跟用Maven创建的普通web项目不同,一般情况下,普通web项目中src/maim/resource下放置的资源文件是在war下面的,而使用Maven骨架gwt-maven-plugin 2.7.0创建出来的文件结构中,src/maim/resource下放置的资源是放置在/WEB-INF/classes
  2. 如果报错:Cannot change version of project facet Dynamic Web Module to 3.0.,可是查看这个网站给出的解决办法:https://my.oschina.net/cloudcoder/blog/362949
0 0
原创粉丝点击