ORACLEADF开发详细介绍_第1页
ORACLEADF开发详细介绍_第2页
ORACLEADF开发详细介绍_第3页
ORACLEADF开发详细介绍_第4页
ORACLEADF开发详细介绍_第5页
已阅读5页,还剩185页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Oraclle ADDF 开发发必读:第第 1 部分分借助 Suubverrsionn 进行版版本控制:在单用户户项目中创创建信息库库了解如何在在单用户或或是团队工工作环境下下使用开源源版本控制制系统 SSubveersioon 管理理您的 OOraclle JDDevelloperr 11gg项目。在本文中中,将学习习如何在单单用户环境境下创建信信息库并开开始使用 Subvversiion 进进行版本控控制。作者:Joohn SStegeeman您是否曾经经在制作文文档(例如如学校的学学期论文)时时,为了能能回到之前前版本保存存了许多份份副本?可可能您在编编程项目中中也做了同同样的事情情,保

2、存多多份您修改改过的源代代码副本,以以便出错时时可回到之之前稳定的的版本。如如果您做过过这样的事事情,您实实际上已经经使用了版版本控制的的初级形式式。然而,面对对非常琐碎碎的项目时时,您很快快就会觉得得这个简单单的办法已已不适合。当您在团团队环境下下工作时,您您还会发现现这种初级级方法在使使版本更改改在团队成成员间共享享以及进行行实时跟踪踪上的不足足。开发项目使使用正式的的版本控制制系统作为为最佳实践践已经很长长时间了。版本控制制系统对团团队、对个个人都有很很多优势:可以实时跟跟踪构件(源源代码文件件、文档、图像以及及类似构件件)的不同同修订版;而且,可可以轻松检检索到构件件的旧版本本。在团队

3、环境境中,由版版本化构件件形成的信信息库可供供整个团队队使用。每次修订都都会生成相相应信息(元元数据和注注释),对对修订进行行批注。甚至对于简简单的单一一开发人员员项目,使使用标准的的版本控制制系统的优优势也非常常明显。本本文向您介介绍了如何何在 Orraclee JDeevelooper 11g中使用非非常流行的的版本控制制系统 (Subvversiion)。为什么使用用 Subbverssion?现在市面上上有很多款款版本控制制系统,有有免费的,也也有付费使使用的。您您可能听说说过其中的的一些,如如 CVSS、git、Micrrosofft Viisuall Souurce Safee、P

4、erfforcee、Ratiionall CleearCaase 以以及 Seerenaa Dimmensiions 等等。在在所有可选选产品中,您您为什么要要选择 SSubveersioon?以下下列出了一一些我为我我的基于 Oraccle 应应用开发框框架 (OOraclle ADDF) 的的项目选择择 Subbverssion 的原因:它是免费的的。我以前前的一个同同事常说:“免费的,我我可不敢用用”,但是 SSubveersioon 却是是一款非常常好用的免免费软件。它被广泛接接受并公认认为行业领领先的解决决方案。一一项最近的的 Forrrestter 研研究报告显显示 Suubver

5、rsionn 是这一一领域的唯唯一领跑者者。Oraclle JDDevelloperr 11gg支持该软软件。虽然然您可以通通过使用系系统的本地地客户端进进行交互在在 Oraacle JDevvelopper 中中使用任何何一款版本本控制系统统,但拥有有与 IDDE 集成成的经验将将会让事情情变得简单单些。Subveersioon 中的的所有提交交都是不可可分割的。当您“提交”或“签入”您对 Suubverrsionn 信息库库的更改时时,您的所所有更改将将全部成功功提交,或或者全部都都未提交。这在 OOraclle ADDF 项目目中尤为重重要,在此此类项目中中,一个逻逻辑对象(例例如 Or

6、raclee ADFF 业务组组件)可能能由多个物物理文件组组成。如果果提交不是是不可分割割的(例如如,在 CCVS 中中),网络络连接中的的故障可能能会导致某某个逻辑对对象只有部部分文件得得到更新,而而剩下的文文件则变为为一组不可可用的代码码。它支持目录录和文件的的版本化。对目录的的添加、删删除和移动动的跟踪和和对单一文文件的此类类操作是相相同的。它支持为文文本文件和和二进制文文件进行基基于差别的的跟踪。大大多数版本本控制系统统对文本文文件只存储储不同修订订版中的差差异;而 Subvversiion 对对二进制文文件也做同同样的处理理,这意味味着减少了了信息库对对磁盘空间间的需求。Subve

7、ersioon 概念念由于不同的的版本控制制系统使用用不同的术术语,有时时候还会有有不同的修修订版管理理方法,因因此让我们们来了解一一些主要的的 Subbverssion 概念:信息库位于于 Subbverssion 中心位置置,用于存存储文件及及其修订版版。一些版版本控制系系统(如 git)使使用分散式式信息库,而而 Subbverssion 却使用集集中式的方方法。工作副本是是信息库中中部分或全全部文件的的本地副本本,从信息息库复制到到用户的本本地设备以以供修改。从信息库库获取工作作副本的流流程叫做“签出”。Subveersioon 使用用复制-修改-合并范例例来处理团团队环境下下的更改。

8、一些其他他的版本控控制系统使使用锁定-修改-解锁范例例,因此,用用户必须先先锁定要修修改的文件件并在完成成修改后解解锁。虽然然 Subbverssion 也支持这这种方法,但但通常只用用于二进制制(非文本本)文件。通过 SSubveersioon, 多多个用户可可以同时对对同一文件件进行修改改;这种情情况下,多多个更改将将被合并(自自动或手动动)。一本制作精精良、详细细解释了这这些概念的的免费电子子书现已提提供下载。安装软件并并设置信息息库您需要首先先设置信息息库并提供供对它的访访问,然后后才能使用用 Subbverssion 存储应用用程序修订订。Subbverssion 提供三种种主要的信

9、信息库访问问方式:通过本地文文件系统(文文件:协议议)通过专用的的 svnn:网络协协议通过配置有有相应模块块(modd_davv 和 modd_davv_svnn)的 Appachee HTTTP 服务务器尽管 Orraclee JDeevelooper 提供对创创建本地信信息库并(通通过文件:协议)访访问它们的的支持,但但此方法只只有在您是是项目的唯唯一开发人人员时才很很有用。最最常用的访访问 Suubverrsionn 信息库库的方法是是通过 HHTTP/HTTPPS 协议议(使用 Apacche)。要创建信信息库并通通过 Appachee 提供访访问,您必必须安装并并配置一些些软件或连

10、接到一一个已有 Subvversiion 信信息库。对对于我的一一些 Orraclee ADFF 项目,我我使用了提提供 Weeb 界面面来创建和和管理信息息库的商业业 Subbverssion 托管服务务;这可能能是一个非非常方便的的选择,因因为托管公公司将会为为您管理备备份并且还还会经常提提供与问题题跟踪软件件的集成。如果您希望望创建您自自己的信息息库,您将将需要安装装并配置 Subvversiion 软软件,以及及 Apaache 和所需模模块。许多多 Linnux 发发布版本带带有已配置置的 Suubverrsionn 和 Apaache。针对 MMicroosoftt Winndow

11、ss,一个名名叫 ViisuallSVN 的公司创创建了一个个用于安装装 Subbverssion 软件的 WWindoows 安安装程序、一个预配配置的 AApachhe HTTTP 服服务器,以以及一个易易于使用的的管理控制制台。当然然,您可以以单独安装装 Subbverssion 和 Apaache HTTPP 服务器器并使用命命令行信息息库管理工工具来创建建信息库,但但使用 VVisuaalSVNN Serrver (wwww.vissualssvn.ccom/sserveer) 是一种种更快捷的的方法。VisuaalSVNN Serrver 的安装非非常简单;只需下载载安装程序序并运

12、行。我提供了了该安装中中重要部分分的屏幕截截图,包括括指定信息息库的存储储路径,AApachhe HTTTP 服服务器的端端口以及 Subvversiion 服服务器应该该在哪里获获取其用户户和组的信信息。我指指定了一些些适用于独独立安装的的选件,使使用 HTTTP(不不是 HTTTPS),并并且选择管管理我自己己的用户和和组而不是是使用 WWindoows 用用户和组:安装很快完完成,并且且会创建一一个名为 Visuual SSVN SServeer 的 Winndowss 服务。在安装结结束时,您您将会看到到启动 VVisuaalSVNN Serrver Manaager 的选项:在 Vi

13、ssualSSVN SServeer Maanageer 中,您您将会看到到Repoositooriess、Userrs和Grouups节点。在在本文中,只只需右键单单击Repoositooriess节点并在在上下文菜菜单中选择择Creaate NNew RRepossitorry.即可创建一一个名为 otn 的信息库库:在 Creeate New Repoositoory 对对话框中,只只需填写信信息库的名名称并选中中创建默认认信息库结结构的复选选框(稍后后将介绍有有关该选项项的更多信信息):这就是创建建您的第一一个 Suubverrsionn 信息库库的全部操操作!如果果您在 VVisua

14、alSVNN Serrver Manaager 中扩展 ootn 信信息库,您您将会看到到三个目录录:“trrunk”、“braanchees”和“taggs”。此此三文件夹夹顶层结构构是构建 Subvversiion 信信息库的惯惯用方法。虽然您也也可以使用用其他任何何您喜欢的的顶层结构构,但 ttrunkk-braanchees-taags 结结构是最常常用的,而而且我也建建议您使用用这种结构构。每一个个目录的用用途如下:trunkk 主线线开发将在在这里进行行,实际上上,有人更更愿意视它它为“主线”。tags 识别别应用程序序发布生命命周期中的的重点包括括对特定的的代码修订订进行标记记(

15、稍后将将对此进行行详细介绍绍)。按照照惯例,已已标记的修修订存储在在 taggs 目录录中。brancches 在繁繁琐的开发发项目中,有有些时候,源源代码由于于很多原因因(例如开开发新特性性而不影响响 truunk 或或稳定代码码以便发布布)需要进进行“分支”处理。按按照惯例,分分支创建在在 braanchees 目录录中。为表明 SSubveersioon 如何何处理多用用户,我还还针对本文文创建了两两个用户,右右键单击 VisuualSVVN Seerverr Mannagerr 中的Userrs节点并选选择Creaate UUser.。我我的两个用用户名为 johnn 和 jossep

16、hiine。将您的应用用程序添加加到信息库库中(导入入)既然您已经经拥有一个个 Subbverssion 信息库,您您可以将接接受版本控控制的应用用程序放入入新信息库库中(该过过程称为导导入)。OOraclle JDDevelloperr 提供的的 GUII 界面让让该任务变变得非常简简单。在本本文中,我我使用包含含两个标准准项目(OOraclle ADDF 业务务组件模型型和适用于于 UI 的 VieewConntrolller)的的简单 OOraclle ADDF Fuusionn Webb 应用程程序;如果果您希望按按照我的方方法进行操操作,您可可以在本文文结尾的“资源”链接部分分下载该

17、应应用程序。要让应用程程序接受版版本控制,应应确保在 Oraccle JJDeveelopeer 中选选择了该应应用程序;然后在 Oraccle JJDeveelopeer 的Verssioniing菜单中选选择Verssion Appllicattion.:出现提示时时,选择Subvversiion作为信息息库的类型型:如果您还没没有定义任任何 Suubverrsionn 连接,Orraclee JDeevelooper 将提示您您创建一个个 Subbverssion 连接。如如果您已经经定义一个个或多个 Subvversiion 连连接,您将将需要从信信息库连接接列表中选选择连接。本文中,

18、我我还没有定定义任何连连接,所以以 Oraacle JDevvelopper 提提示我创建建一个。要要创建 SSubveersioon 连接接,您需要要知道信息息库的 UURL。要要使用 VVisuaalSVNN Serrver Manaager 获得 URRL,只需需右键单击击信息库并并在上下文文菜单中选选择Copyy URLL to Clippboarrd:然后,您可可以将 UURL 粘粘贴到 JJDeveelopeer 对话话框中。在在提供用户户名和口令令后,您可可以单击Testt Reaad Acccesss以确保一一切设置正正确:导入您应用用程序的下下一步是指指定承载您您应用程序序的

19、信息库库的目录。根据我们们之前关于于 Subbverssion 信息库常常规结构的的讨论,ttrunkk 目录是是开发主线线所在的目目录,所以以这也是我我们导入的的应用程序序的目标位位置:下一步是指指定您本地地磁盘上的的应用程序序源目录;Oraccle JJDeveelopeer 通常常会正确获获取此信息息,您不需需要做出更更改。在您您对 Suubverrsionn 信息库库执行操作作时,为您您的操作提提供注释是是一个很好好的习惯;应用程序序的初始导导入也不例例外,所以以我们提供供了一个有有帮助的注注释:导入的下一一步是告诉诉 Subbverssion 我们希望望它忽略的的文件和目目录。我们们

20、通常不希希望生成的的文件(例例如类文件件)、临时时文件等存存储在 SSubveersioon 信息息库中,所所以我们需需要告诉 Subvversiion 忽忽略它们。关于机制制我们不需需要了解太太多,只需需知道 SSubveersioon 使用用一个特殊殊的属性来来识别应该该忽略的对对象就够了了。Oraacle JDevvelopper 提提供了一整整套默认忽忽略模式,然然而您也可可以使用 Filtters 对话框自自己添加:当您将您的的应用程序序导入 SSubveersioon 时,您您本地磁盘盘上的原始始文件仍然然是一组本本地文件;本地副本本根本不具具有到信息息库的连接接(它仅仅仅是一个本

21、本地副本而而不是一个个 Subbverssion“工作副本本”)。通常常导入您应应用程序后后的下一步步是删除您您的本地副副本并签出出信息库中中的工作副副本。Orraclee JDeevelooper 在下一个个对话框 Optiions 中会向您您提供一个个快捷选项项:现在您可以以查看导入入选项汇总总并完成导导入:您可以在 Oraccle JJDeveelopeer 的 SVNN Connsolee Logg 窗口中中查看导入入流程的进进度。导入入完成后,您您应该可以以看见签出出操作的进进度(如果果您选中了了在导入后后自动执行行签出的复复选框)。签出完成成后,请查查看 Apppliccatioo

22、n Naavigaator(您您可能需要要先单击刷刷新图标)。您现在应应该可以看看见更多的的信息,如如下所示:每个项目都都显示了生生成工作副副本的信息息库(此屏屏幕截图中中为 m)。每个文件在在左下方都都有一个“statte ovverlaay”图标标,用来显显示工作副副本文件的的状态。在在此例中,所所有的图标标为圆圈,表表示这些文文件在签出出后还没有有经过本地地修改。每个文件都都显示了它它的版本号号(此屏幕幕截图中为为 2)。文文件版本号号为 2(而不不是 1)是因因为信息库库创建为版版本 1 而应用程程序导入为为版本 22。进行本地更更改并向 Subvversiion 提提交现在应用程程序

23、的本地地副本是一一个 Suubverrsionn“工作副副本”,这意味味着该副本本与 Suubverrsionn 信息库库相关联。Subvversiion 通通过使用工工作副本中中名为 .svn 的隐藏目目录维护此此关联,如如下所示:您不应更改改 .svvn 目录录中的内容容,因为它它们由 SSubveersioon 自动动维护。既然我们的的应用程序序已经接受受版本控制制了,那么么让我们来来对应用程程序做些更更改并将它它们保存到到 Subbverssion 信息库中中。我们对对 Moddel 项项目中的Regiions实体对象象 (EOO) 做一一个简单的的修改,设设置它的更更新批处理理的调优

24、属属性。在做出修改改并保存 EO 后后,您将注注意到 OOraclle JDDevelloperr 中发生生了一些变变化。首先先,RegiionsE0 的的 staate ooverllay 图图标变为星星号,这说说明我们做做了本地更更改但还没没有保存(或或“提交”)到 Suubverrsionn 信息库库:其次,如果果您查看 SubvversiionPPendiing CChangges窗口:您将会看到到您修改过过的 Reegionns.xmml 文件件被列为传传出更改:在Penndingg Chaangess窗口中,可可以很方便便地查看您您当前程序序中已在工工作副本中中进行更改改的文件(传

25、传出)、在在工作副本本中新创建建的但没有有添加到 Subvversiion 的的文件(待待处理项)以以及其他人人在 Suubverrsionn 信息库库中做的但但没有应用用到工作副副本的更改改(传入)。现在来说说,因为我我是应用程程序的唯一一开发人员员,所以没没有传入更更改而只有有一个传出出更改。接下来,我我将完成我我的更改设设置,为项项目中的Emplloyeees和JobssEO 设置相同同的调优属属性。当我我完成时,state overlay 图标和Pending Changes窗口将反映出我还有三个文件中的本地修改未提交:现在我已更更改完毕,可可以将它们们提交给信信息库了。我将使用用 A

26、ppplicaationn Navvigattor 的的快捷菜单单来提交我我工作副本本中的所有有更改:当我选择Commmit WWorkiing CCopy.后,Oraacle JDevvelopper 提提示我输入入注释。我我们知道,我我们应该始始终提供有有帮助的注注释,以便便项目团队队一眼就可可以看到已已做的更改改:在更改提交交后,SVN Conssole - Loog将显示操操作结果:statee oveerlayy 图标也也变回了实实心圆圈以以表示没有有未提交的的本地修改改。我提交交的文件的的版本号相相应地增加加,显示文文件目前为为版本 33:Pendiing CChangges窗口显

27、示示无传出更更改(我们们已经提交交了所有本本地更改):总结您现在已经经掌握了在在单一用户户环境下结结合使用 Subvversiion 和和 Oraacle JDevvelopper 111g的相关信信息。本系系列的下一一篇文章将将介绍当有有其他开发发人员加入入并同时作作出更改的的时候,您您应该如何何处理。Oraclle ADDF 开发发必读 : 第 2 部分分借助 Suubverrsionn 进行版版本控制:在团队环环境下管理理版本在本系列的的第 1 部分分,您已学学习了安装装 Subbverssion 、设置信信息库和使使用 Orraclee JDeevelooper 11g执行基本本操作等

28、基基础知识。在第 22 部分中中,您将了了解当您将将另一位开开发人员加加入到团队队中后,OOraclle JDDevelloperr 和 Subbverssion 将如何工工作。在团队中加加入新的开开发人员如果您从第第 1 部分分就按照教教程进行操操作,您一一定记得我我们创建了了两个可以以访问 SSubveersioon 信息息库的用户户 johhn 和 jossephiine。到到目前为止止,Johhn 一直直是此应用用程序唯一一的开发人人员;我们们来看看 Joseephinne 如何何加入到团团队中并对对该应用程程序进行操操作。Josepphinee 要做的的第一件事事是从信息息库签出一一

29、个应用程程序的副本本。记住“签出”应用程序序副本只是是在本地设设备上放入入一个应用用程序的本本地副本(以以及一些日日常管理目目录)。这这样,您就就能知道本本文中都是是谁在执行行操作,我我将 Joosephhine 作为本文文的主角。为签出应用用程序的副副本,Joosephhine 从 JDeevelooper 的Verssioniing菜单中选选择Checck Ouut:图 1签签出应用程程序副本因为 Joosephhine 没有定义义信息库连连接,所以以她填写了了信息库信信息、提供供了她的凭凭证并测试试了连接:图 2创创建 Suubverrsionn 连接因为她希望望在代码的的开发主线线(“

30、trrunk”)上工作作,所以她她选择了trunnk目录并为为签出副本本提供了她她本地硬盘盘驱动器上上的目标路路径:图 3指指定签出文文件的位置置然后,Orraclee JDeevelooper 从信息库库中签出应应用程序代代码的最新新版本并将将其打开。Joseephinne 现在在可以对应应用程序代代码进行操操作了。为项目添加加新文件现在,Joosephhine 是团队的的一员,她她希望将一一个新的 Javaa 源代码码文件添加加到 ViiewCoontroollerr 项目中中。因为团团队使用的的是 Suubverrsionn,所以她她不需要做做任何特别别的事情来来创建新的的 .jaava

31、 文文件并将其其添加到她她的项目中中;只需像像往常一样样在 Orraclee JDeevelooper 中工作。Joseephinne 创建建了一个新新的 .jjava 文件并在在其中创建建了一些方方法:图 4新新 Helllo.jjava 文件当 Jossephiine 在在Appllicattion Naviigatoor窗口中看看到新文件件时,她将将看到她的的文件上有有一个蓝色色的 x 图标,这这表示该文文件还没有有与 Suubverrsionn 信息库库相关联:图 5HHelloo.javva 显示示蓝色 xx 覆盖图图标而且,当她她查看Pendding Channges窗口时(OOr

32、aclleJDDevelloperr 菜单中中Verssioniing-Suubverrsionn-Pendding Channges),她她将看到她她的新 HHelloo.javva 文件件在Canddidattes选项卡中中列出,这这表示她有有一个文件件待添加到到版本控制制中:图 6PPendiing cchangges 显显示 Heello.javaa 为待添添加项目为了将新文文件添加到到版本控制制,她选择择该文件并并使用Pendding Channges窗口中的的“addd”按钮(加号号 + 图标):图 7通通过 Peendinng Chhangees 窗口口添加待选选文件或者在AAp

33、pliicatiion NNaviggatorr窗口中右右键单击该该文件并选选择Add.:图 8通通过 Apppliccatioon Naavigaator 上下文菜菜单添加待待选文件两种方法的的结果都一一样 使用 Orraclee JDeevelooper 中的一项项功能经常常会有不止止一种方法法。添加文文件将会对对其进行标标记以添加加到信息库库中;注意意添加文件件不会将更改改提交到信信息库中。当 Joosephhine 查看Pendding Channges窗口中的的Outggoingg选项卡时时,她或许许会感到一一点惊讶,因因为显示她她有五个传传出更改,而而不是仅一一个:图 9PPend

34、iing CChangges 窗窗口显示需需要添加的的文件和目目录原因是 SSubveersioon 不仅仅对目录,而而且对文件件也可以进进行版本控控制;添加加一个新的的 Javva 文件件也创建了了一个目录录结构。现现在,Joosephhine 已完成更更改,她已已经准备好好将它们提提交到信息息库中了;在她这么么做之前,她她的更改只只是存储在在她的本地地硬盘驱动动器中而不不能供团队队中的其他他人使用。在第 11 部分,Joohn 使使用 Orraclee JDeevelooper 中的Commmit WWorkiing CCopy操作提交了了他的更改改;Jossephiine 的的做法将会会

35、有一点不不同。她选选择了Pendding Channges窗口中的的所有项目目(一个文文件和四个个目录)并并单击Commmit按钮:图 10向信息库库提交更改改然后,她提提供了提交交消息/注释以便便其他人知知道她做出出了什么修修改:图 11为更改提提供注释然后,OrracleeJDeevelooper 会将更改改发送到信信息库,SSubveersioon 将保保存它们并并递增修订订号。从信息库更更新应用程程序因为 Joohn 的的工位就在在 Jossephiine 的的旁边,所所以他可以以和她讨论论项目并得得知她向项项目中添加加了一个新新的 Jaava 类类。他回到到自己工位位,在 OOrac

36、lle JDDevelloperr 中打开开他的项目目副本,可可在任何地地方都没能能找到该新新文件:图 12Johnn 的应用用程序(HHelloo.javva 在哪哪里?)为什么 JJohn 看不到它它?因为每每个开发人人员(Joohn 和和 Jossephiine)都都在对应用用程序的本本地副本进进行操作。当另一个个团队成员员提交更改改时,更改改不会自动从从信息库复复制到本地地工作副本本;更改仅仅在开发人人员特别要要求从信息息库更新他或她的的工作副本本时才会进进行复制。通常,开发发人员的最最佳做法是是定期在开开始新工作作前更新他他们的工作作副本。然然而,如果果不更新,开开发人员怎怎么知道应

37、应用程序有有更改需要要更新呢?让我们回回到 Joohn 的的工作会话话以进行演演示。当 Johnn 查看Pendding Channges窗口时,他他注意到在在Incoomingg选项卡中中有新的文文件:图 13Pendding Channges 窗口中显显示传入更更改通常,Joohn 可可以通过在在Pendding Channges窗口中选选择要传入入的更改并并单击Updaate按钮来更更新他的工工作副本。但是,由由于一些原原因,在他他的OraccleJJDeveelopeer 111g副本中,该该按钮不可可用,所以以 Johhn 使用用了Appplicaationn Navvigattor

38、窗口中的的Updaate WWorkiing CCopy.:图 14更新工作作副本在显示的对对话框中,他他接受了默默认值并单单击OK:图 15Updaate WWorkiing CCopy 对话框在OraacleJDevvelopper 从从信息库更更新应用程程序后,JJohn 现在可以以在Appllicattion Naviigatoor窗口中看看到 Joosephhine 新添加的的文件:图 16Johnn 的应用用程序显示示 Helllo.jjava最佳实践:确定公用用代码样式式设置John 打开 Heello.javaa 查看 Joosephhine 都做了什什么。他首首先注意到到代码

39、格式式的样式和和他的不一一样;相对对于左大括括号在同一一行的格式式,图 17Joseephinne 的代代码样式他更喜欢左左大括号在在下一行的的样式:图 18Johnn 的代码码样式所以他做的的第一件事事是使用OraccleJJDeveelopeer 中的的 Refformaat 命令令让文件更更易于阅读读。然而,当当他这样做做之后,文文件的内容容就被更改改了,并且且产生了一一个需要提提交给信息息库的更改改。如果他他提交更改改,当 JJosepphinee(她更喜喜欢原来的的代码样式式)下一次次更新她的的工作副本本时,会将将代码格式式重新设置置为她喜欢欢的样式。如果他们们不协商出出一个公用用的

40、样式,John 和 Josephine 将永远在 Java 代码上打乒乓,无限次地重新格式化另一个人的代码。这个案例的的教训是,当当在团队环环境下使用用版本控制制时,您需需要预先就就公用标准准进行协商商以避免出出现这样的的问题。幸幸运的是,OracleJDeveloper 具有一个用于指定代码样式首选项的选项:图 19在 Oraacle JDevvelopper 中中设置代码码样式首选选项John 喜欢的样样式是 JJDeveelopeer Cllassiic,而 Joosephhine 喜欢的样样式是 JJava Codee Connventtionss。Johnn 和 Jossephiin

41、e 进进行了短暂暂的讨论,同同意都使用用 JDeevelooper Classsic 设置。Joohn 向向 Subbverssion 提交了他他对 Heello.javaa 更改(并并提供了关关于他所做做更改的注注释):图 20Johnn 的更改改注释Josepphinee 更改她她的代码样样式首选项项,看到Pendding Channges窗口中Incoomingg选项卡中中的更改,并并将更改更更新到她的的工作副本本:图 21Joseephinne 将 Johhn 的更更改更新到到她的工作作副本解决冲突如前文所述述,开发人人员的工作作副本只是是其本地硬硬盘驱动器器上的一个个本地应用用程序副

42、本本,所以才才有了两个个开发人员员同时对一一个文件进进行操作的的可能性。Subvversiion 提提供了处理理这种情况况的机制。有两个基基本用例:第一个,如如果一个开开发人员在在文件的开开始部分对对某些内容容进行了编编辑,而另另一个开发发人员在同同一文件的的结尾部分分对某些内内容进行了了编辑,SSubveersioon 可以以合并这些些更改。SSubveersioon 通过过一个简单单的文本比比较算法来来完成合并并,所以它它不能确保保更改是兼兼容的,但但可以通过过修改相同同的行来确确保更改没没有彼此冲冲突。在另另一个用例例中,如果果两个开发发人员都编编辑了同一一个文件的的同一行,Subver

43、sion 就不能合并这两个更改而需要用户手动去解决冲突。幸运的是,OracleJDeveloper 11g提供了一个绝妙的可视冲突解决机制。我们来看第第一个用例例,以 JJohn 和 Jossephiine 的的 Helllo.jjava 文件为例例。首先,John 对 sayHello 方法做了一个简单的更改以让它使用更随意的英语:图 22Johnn 对 Helllo.jjava 的“非正式英英语”更改同时,Joosephhine 对 sayyGooddbye 方法进行行了修改以以使它使用用斯瓦希里里语:图 23Joseephinne 对 Helllo.jjava 的斯瓦希希里语更改改之后,

44、Joosephhine 向 Subbverssion 提交了她她的更改:图 24Joseephinne 提交交她的斯瓦瓦希里语更更改现在,有趣趣的是 当 Johhn 尝试试提交他的的更改时,他他收到了以以下错误消消息:图 25错误信息息提示 JJohn 他的 Heello.javaa 副本已已过期Subveersioon 想要要告诉他的的是信息库库的 Heello.javaa 版本已已与他上次次更新的版版本不同,他他必须先更更新文件然然后才能提提交更改。所以 JJohn 更新了他他的工作副副本,更新新之后的 Helllo.jaava 如如下:图 26Joseephinne 的更更改合并到到 J

45、ohhn 的工工作副本中中的 Heello.javaa注意,Suubverrsionn 已经自自动将 JJosepphinee 的更改改合并到 Johnn 的工作作副本中。Subvversiion不不能告诉我我们更改合合并后会不不会仍有效效(一个更更改使用非非正式英语语而另一个个更改使用用斯瓦希里里语);它它们放在一一起是否有有效由 JJohn 来决定。我们假设设 Johhn 认为为这两个更更改还不错错;要记住住目前更改改还仅在 Johnn 的工作作副本中而而不在信息息库中。所所以 Joohn 提提交了修订订后的 HHelloo.javva,并仅仅对他的更更改做了注注释:图 27Johnn 提

46、交合合并后的 Helllo.jaava 文文件最后,当 Joseephinne 更新新她的工作作副本时,她她将得到一一个包含她她和 Joohn 两两个人的更更改的 HHelloo.javva 的最最新版本。现在让我们们看一下,当当两个人对对同一文件件做出了更更改而 SSubveersioon 不能能自动合并并更改时会会发生什么么。Jossephiine 对对 Helllo.jjava 进行的编编辑如下:图 28Joseephinne 对 Helllo.jjava 做出了一一些大的更更改同时,Joohn 对对他的工作作副本的编编辑如下:图 29Johnn 也对 Heello.javaa 做出了了

47、一些大的的更改这次 Joohn 先先提交了他他的更改。现在,如如果 Joosephhine 尝试提交交 Helllo.jjava,她她将获得相相同的提示示她本地副副本过期的的错误消息息。然而,当当她尝试更更新她的工工作副本时时,她将注注意到三个个问题。首首先,在SVN Conssole - Loog窗口中,她她将看到一一个冲突的的提示:图 30提交时日日志中显示示的冲突其次,在Pendding Channges窗口中,她她的文件副副本将标记记为有冲突突:图 31Pendding Channges 窗口显示示文件有冲冲突最后,在Struucturre窗口中,她她将看到几几个额外的的 Helllo

48、.jjava 副本:图 32Struucturre 窗口口显示 HHelloo.javva 的其其他版本这些文件是是 Subbverssion 创建用来来帮助解决决冲突的,但但是不必手手动解决冲冲突,OrracleeJDeevelooper 提供了一一个非常好好的可视合合并工具,Josephine 可以通过右键单击 Hello.java 并选择Resolve Conflicts来激活该工具:图 33启动可视视合并工具具可视合并工工具在左侧侧显示 JJosepphinee 的文件件版本(名名为 Heello.javaa.minne),在在右侧显示示来自信息息库的当前前版本(名名为 Heello.

49、javaa.r),在中中间显示合合并结果:图 34可视合并并工具显示示 Helllo.jjava 的三个版版本有冲突的更更改清晰地地标为红色色。为了解解决冲突,Josephine 只需选择每行应该在最终文件中出现的版本,并通过单击相应的绿色箭头( 或 ssvn -verrsionnsvn, verssion 1.4.6 (rr285221) coompilled DDec 220 20007, 16:119:222就公用标准准达成一致致要确保您的的团队使用用 Oraacle JDevvelopper 和和 Subbverssion 高效工作作,您应该该针对您的的 ADFF 项目制制定一系列列公

50、用标准准。(我在在第 2 部分中介介绍代码样样式首选项项时提供了了一个示例例。)另外外,您的团团队还应该该统一一些些其他标准准,例如,数数据库连接接名称、OOraclle ADDF 业务务组件配置置设置等。如果您在在项目开始始时就制定定了一系列列公用标准准,则可避避免在后期期不得不将将所有代码码转换为统统一样式的的麻烦。Subveersioon 有一一个特性叫叫做“钩子”,可以帮帮助您在将将代码签入入信息库时时强制执行行一组公用用标准。钩钩子是用户户提供的脚脚本,Suubverrsionn 会在特特定时间运运行它,例例如在向信信息库提交交更改之前前。您可以以使用开源源工具(如如 HYPERLI

51、NK /index.html Checckstyyle)轻轻松地编写写一个预提提交钩子来来检查 JJava 文件的代代码样式,并并在不符合合统一代码码样式时拒拒绝文件。还有一个个适用于 Subvversiion 的的框架叫做做 HYPERLINK / SVNCCheckker,带带有现成的的 Subbverssion 钩子,可可以在将代代码提交到到信息库之之前,针对对代码调用用 Cheecksttyle。无法代替交交流对版本控制制系统的常常见误解是是,使用版版本控制系系统减少了了开发人员员之间的交交流需求。事实上,使使用 Suubverrsionn 或任何何其他版本本控制系统统并不会减减少您团

52、队队成员之间间进行交流流的需求,并并且有可能能会增加交交流的需求求,因为您您使用结构构化程度更更强(而不不是结构化化程度较低低)的方法法进行开发发。当使用 OOraclle ADDF 开发发应用程序序时,您应应该特别注注意协调团团队成员在在模型层中中的开发活活动。此原原则对于 ADF 业务组件件尤为重要要,因为其其中的单逻逻辑对象(如如视图对象象)可能包包含多个文文件。如果果两个开发发人员都尝尝试添加或或修改同一一个视图对对象,就很很容易造成成多文件构构成的视图图对象不同同步并且变变得不可用用。要避免免该问题,您您应该确保保您的团队队成员就他他们的工作作内容进行行交流。跟踪外部依依赖性当您在使

53、用用 Oraacle ADF 开发应用用程序时,您您的应用程程序经常需需要依靠非非 Oraacle JDevvelopper 生生成的组件件。一个常常见的例子子是第三方方库的使用用;另一个个外部组件件的常见例例子是应用用程序所依依靠的数据据库对象。如果您不不将您的版版本跟踪方方法应用于于这些外部部组件,当当团队中的的一部分成成员使用的的业务组件件版本与另另一部分成成员使用的的版本不同同时,则可可能出现问问题。要避避免该问题题,您应该该将您的版版本跟踪方方法也应用用于外部组组件。现在,让我我们来了解解涉及更多多常见外部部组件时的的情况。第三方库虽然 Appachee Mavven 为为实现项目目

54、对特定版版本的第三三方库的相相依性提供供了方法,但但 Oraacle JDevvelopper 111g(在本文文撰写时)还还没有对 Maveen 的内内置支持。而且,不不是所有人人都在其项项目中使用用 Mavven,所所以我将介介绍另一种种方法。出于演示目目的,我们们假设您希希望在您的的示例应用用程序中使使用 Appachee POII 库。执执行此操作作的方法之之一是将所所需的 JJAR 文文件下载到到每个开发发人员的文文件系统上上的某个位位置,并在在 Oraacle JDevvelopper 中中创建一个个指向该 JAR 文件的库库定义。然然而,当使使用该方法法时,不同同开发人员员的 J

55、AAR 文件件版本可能能不同,因因此会产生生问题。要要避免此类类问题,我我使用的方方法是创建建一个包括括所有第三三方 JAAR 文件件的 Orraclee JDeevelooper 项目;然然后可以将将此项目添添加到 SSubveersioon 信息息库中,可可以像管理理您的应用用程序源代代码一样管管理该项目目。为了演示,让让我们看看看团队成员员 Johhn 如何何针对 HYPERLINK /technetwork/cn/articles/adf/part3-098218-zhs.html Apacche PPOI库使用此此方法。JJohn 做的第一一件事是从从 Apaache POI 网站下

56、载载相应的文文件。然后后,他在其其应用程序序目录结构构中为第三三方库创建建了一个目目录:图 1为为第三方库库创建一个个目录接下来,JJohn 为 POII JARR 文件创创建了一个个子目录,并并将它们从从 POII 分发解解压缩到该该目录:图 2解解压缩 PPOI JJAR 文文件在 Oraacle JDevvelopper 中中,Johhn 为第第三方 JJAR 文文件创建了了一个新项项目。他在在之前创建建的目录中中创建该项项目。他使使用 Apppliccatioon Naavigaator 中的快捷捷菜单来完完成此任务务:图 3为为第三方库库创建一个个新项目出现提示时时,他选择择 Gen

57、nericc Proojectt 作为项项目类型:图 4选选择Geneeric ProjjectJohn 然后指定定了相应的的项目名称称,并提供供了他之前前创建的目目录。不需需要向此项项目中添加加任何库:图 5指指定项目名名称和目录录现在,项目目在 Apppliccatioon Naavigaator 中可见(尽尽管当将它它展开时还还看不到有有文件):图 6新新创建的项项目为了让 PPOI JJAR 文文件成为项项目的一部部分,Joohn 必必须将项目目配置为包包含项目资资源的源路路径中的所所有子目录录。为此,John 右键单击3pLibs项目并选择Project Properties:图 7

58、显显示项目的的属性然后,通过过展开Projject Sourrce PPathss节点并选选择Resoourcees,他可可以单击Incllude Conttent fromm Subbfoldders复选框以以包括项目目所有子目目录中的 JAR 文件。图 8包包括项目资资源中的子子目录进行完该配配置后,现现在,POOI JAAR 文件件在 Apppliccatioon Naavigaator 中将可见见:图 9AAppliicatiion NNaviggatorr 中的 POOI JAAR 文件件最后,Joohn 通通过Pendding Channges窗口向 SSunbvversiion

59、信信息库中添添加四个新新文件(一一个新项目目文件和三三个 JAAR 文件件),并提提交带有相相应注释的的更改:图 10提交新的的项目和 JAR 文件John 现在可以以创建一个个新的包含含 POII JARR 文件的的库定义,并并开始在项项目中使用用 Apaache POI。下一次 Joseephinne 更新新她的工作作副本时,她她也将看到到新的 33oLibbs 项目目和 Appachee POII 文件。将来,如如果团队决决定更新所所使用的 Apacche PPOI 的的版本,他他们可以下下载新的版版本,用新新的版本替替换现有的的 JARR 文件,并并向信息库库提交更改改,以确保保整个团

60、队队使用同一一版本。数据库对象象另一个外部部依赖性的的常见例子子是您构建建应用程序序所使用的的数据库对对象(表、存储过程程等)。如如果您像许许多开发团团队一样 每个个团队成员员都使用其其自己的开开发数据库库 您的的团队成员员的数据库库很可能不不同步,从从而导致版版本问题。为了避免免此类问题题发生,您您应该将您您需要的所所有构件都都存储在您您的 Suubverrsionn 信息库库中以保持持数据库对对象为最新新。在 Oraacle JDevvelopper 中中,您可以以通过多种种方法完成成此操作,包包括:使用离线数数据库对象象来存储您您的对象定定义。当对对象定义更更改后,您您可以使用用 Ora

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论