欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    ORACLEADF开发详细介绍.docx

    • 资源ID:1663313       资源大小:8.04MB        全文页数:189页
    • 资源格式: DOCX        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    ORACLEADF开发详细介绍.docx

    Oracle ADF 开发必读:第 1 部分借助 Subversion 进行版本控制:在单用户项目中创建信息库了解如何在单用户或是团队工作环境下使用开源版本控制系统 Subversion 管理您的 Oracle JDeveloper 11g 项目。 在本文中,将学习如何在单用户环境下创建信息库并开始使用 Subversion 进行版本控制。作者:John Stegeman 您是否曾经在制作文档(例如学校的学期论文)时,为了能回到之前版本保存了许多份副本?可能您在编程项目中也做了同样的事情,保存多份您修改过的源代码副本,以便出错时可回到之前稳定的版本。如果您做过这样的事情,您实际上已经使用了版本控制的初级形式。然而,面对非常琐碎的项目时,您很快就会觉得这个简单的办法已不适合。当您在团队环境下工作时,您还会发现这种初级方法在使版本更改在团队成员间共享以及进行实时跟踪上的不足。开发项目使用正式的版本控制系统作为最佳实践已经很长时间了。版本控制系统对团队、对个人都有很多优势:· 可以实时跟踪构件(源代码文件、文档、图像以及类似构件)的不同修订版;而且,可以轻松检索到构件的旧版本。· 在团队环境中,由版本化构件形成的信息库可供整个团队使用。· 每次修订都会生成相应信息(元数据和注释),对修订进行批注。甚至对于简单的单一开发人员项目,使用标准的版本控制系统的优势也非常明显。本文向您介绍了如何在 Oracle JDeveloper 11g 中使用非常流行的版本控制系统 (Subversion)。为什么使用 Subversion?现在市面上有很多款版本控制系统,有免费的,也有付费使用的。您可能听说过其中的一些,如 CVS、git、Microsoft Visual Source Safe、Perforce、Rational ClearCase 以及 Serena Dimensions 等等。在所有可选产品中,您为什么要选择 Subversion?以下列出了一些我为我的基于 Oracle 应用开发框架 (Oracle ADF) 的项目选择 Subversion 的原因:· 它是免费的。我以前的一个同事常说:“免费的,我可不敢用”,但是 Subversion 却是一款非常好用的免费软件。· 它被广泛接受并公认为行业领先的解决方案。一项最近的 Forrester 研究报告显示 Subversion 是这一领域的唯一领跑者。· Oracle JDeveloper 11g 支持该软件。虽然您可以通过使用系统的本地客户端进行交互在 Oracle JDeveloper 中使用任何一款版本控制系统,但拥有与 IDE 集成的经验将会让事情变得简单些。· Subversion 中的所有提交都是不可分割的。当您“提交”或“签入”您对 Subversion 信息库的更改时,您的所有更改将全部成功提交,或者全部都未提交。这在 Oracle ADF 项目中尤为重要,在此类项目中,一个逻辑对象(例如 Oracle ADF 业务组件)可能由多个物理文件组成。如果提交不是不可分割的(例如,在 CVS 中),网络连接中的故障可能会导致某个逻辑对象只有部分文件得到更新,而剩下的文件则变为一组不可用的代码。· 它支持目录和文件的版本化。对目录的添加、删除和移动的跟踪和对单一文件的此类操作是相同的。· 它支持为文本文件和二进制文件进行基于差别的跟踪。大多数版本控制系统对文本文件只存储不同修订版中的差异;而 Subversion 对二进制文件也做同样的处理,这意味着减少了信息库对磁盘空间的需求。Subversion 概念由于不同的版本控制系统使用不同的术语,有时候还会有不同的修订版管理方法,因此让我们来了解一些主要的 Subversion 概念:信息库位于 Subversion 中心位置,用于存储文件及其修订版。一些版本控制系统(如 git)使用分散式信息库,而 Subversion 却使用集中式的方法。工作副本是信息库中部分或全部文件的本地副本,从信息库复制到用户的本地设备以供修改。从信息库获取工作副本的流程叫做“签出”。Subversion 使用复制-修改-合并范例来处理团队环境下的更改。一些其他的版本控制系统使用锁定-修改-解锁范例,因此,用户必须先锁定要修改的文件并在完成修改后解锁。虽然 Subversion 也支持这种方法,但通常只用于二进制(非文本)文件。通过 Subversion, 多个用户可以同时对同一文件进行修改;这种情况下,多个更改将被合并(自动或手动)。一本制作精良、详细解释了这些概念的免费电子书现已提供下载。安装软件并设置信息库您需要首先设置信息库并提供对它的访问,然后才能使用 Subversion 存储应用程序修订。Subversion 提供三种主要的信息库访问方式:· 通过本地文件系统(文件:协议)· 通过专用的 svn:网络协议· 通过配置有相应模块(mod_dav 和 mod_dav_svn)的 Apache HTTP 服务器尽管 Oracle JDeveloper 提供对创建本地信息库并(通过文件:协议)访问它们的支持,但此方法只有在您是项目的唯一开发人员时才很有用。最常用的访问 Subversion 信息库的方法是通过 HTTP/HTTPS 协议(使用 Apache)。要创建信息库并通过 Apache 提供访问,您必须安装并配置一些软件 或 连接到一个已有 Subversion 信息库。对于我的一些 Oracle ADF 项目,我使用了提供 Web 界面来创建和管理信息库的商业 Subversion 托管服务;这可能是一个非常方便的选择,因为托管公司将会为您管理备份并且还会经常提供与问题跟踪软件的集成。如果您希望创建您自己的信息库,您将需要安装并配置 Subversion 软件,以及 Apache 和所需模块。许多 Linux 发布版本带有已配置的 Subversion 和 Apache。针对 Microsoft Windows,一个名叫 VisualSVN 的公司创建了一个用于安装 Subversion 软件的 Windows 安装程序、一个预配置的 Apache HTTP 服务器,以及一个易于使用的管理控制台。当然,您可以单独安装 Subversion 和 Apache HTTP 服务器并使用命令行信息库管理工具来创建信息库,但使用 VisualSVN Server ( 是一种更快捷的方法。VisualSVN Server 的安装非常简单;只需下载安装程序并运行。我提供了该安装中重要部分的屏幕截图,包括指定信息库的存储路径,Apache HTTP 服务器的端口以及 Subversion 服务器应该在哪里获取其用户和组的信息。我指定了一些适用于独立安装的选件,使用 HTTP(不是 HTTPS),并且选择管理我自己的用户和组而不是使用 Windows 用户和组:安装很快完成,并且会创建一个名为 Visual SVN Server 的 Windows 服务。在安装结束时,您将会看到启动 VisualSVN Server Manager 的选项:在 VisualSVN Server Manager 中,您将会看到 Repositories、 Users 和 Groups 节点。在本文中,只需右键单击 Repositories 节点并在上下文菜单中选择 Create New Repository. 即可创建一个名为 otn 的信息库:在 Create New Repository 对话框中,只需填写信息库的名称并选中创建默认信息库结构的复选框(稍后将介绍有关该选项的更多信息):这就是创建您的第一个 Subversion 信息库的全部操作!如果您在 VisualSVN Server Manager 中扩展 otn 信息库,您将会看到三个目录:“trunk”、“branches”和“tags”。此三文件夹顶层结构是构建 Subversion 信息库的惯用方法。虽然您也可以使用其他任何您喜欢的顶层结构,但 trunk-branches-tags 结构是最常用的,而且我也建议您使用这种结构。每一个目录的用途如下:· trunk  主线开发将在这里进行,实际上,有人更愿意视它为“主线”。· tags  识别应用程序发布生命周期中的重点包括对特定的代码修订进行标记(稍后将对此进行详细介绍)。按照惯例,已标记的修订存储在 tags 目录中。· branches  在繁琐的开发项目中,有些时候,源代码由于很多原因(例如开发新特性而不影响 trunk 或稳定代码以便发布)需要进行“分支”处理。按照惯例,分支创建在 branches 目录中。为表明 Subversion 如何处理多用户,我还针对本文创建了两个用户,右键单击 VisualSVN Server Manager 中的 Users 节点并选择 Create User.。我的两个用户名为 john 和 josephine。将您的应用程序添加到信息库中(导入)既然您已经拥有一个 Subversion 信息库,您可以将接受版本控制的应用程序放入新信息库中(该过程称为导入)。Oracle JDeveloper 提供的 GUI 界面让该任务变得非常简单。在本文中,我使用包含两个标准项目(Oracle ADF 业务组件模型和适用于 UI 的 ViewController)的简单 Oracle ADF Fusion Web 应用程序;如果您希望按照我的方法进行操作,您可以在本文结尾的“资源”链接部分下载该应用程序。要让应用程序接受版本控制,应确保在 Oracle JDeveloper 中选择了该应用程序;然后在 Oracle JDeveloper 的 Versioning 菜单中选择 Version Application.:出现提示时,选择 Subversion 作为信息库的类型:如果您还没有定义任何 Subversion 连接,Oracle JDeveloper 将提示您创建一个 Subversion 连接。如果您已经定义一个或多个 Subversion 连接,您将需要从信息库连接列表中选择连接。本文中,我还没有定义任何连接,所以 Oracle JDeveloper 提示我创建一个。要创建 Subversion 连接,您需要知道信息库的 URL。要使用 VisualSVN Server Manager 获得 URL,只需右键单击信息库并在上下文菜单中选择 Copy URL to Clipboard:然后,您可以将 URL 粘贴到 JDeveloper 对话框中。在提供用户名和口令后,您可以单击 Test Read Access 以确保一切设置正确:导入您应用程序的下一步是指定承载您应用程序的信息库的目录。根据我们之前关于 Subversion 信息库常规结构的讨论,trunk 目录是开发主线所在的目录,所以这也是我们导入的应用程序的目标位置:下一步是指定您本地磁盘上的应用程序源目录;Oracle JDeveloper 通常会正确获取此信息,您不需要做出更改。在您对 Subversion 信息库执行操作时,为您的操作提供注释是一个很好的习惯;应用程序的初始导入也不例外,所以我们提供了一个有帮助的注释:导入的下一步是告诉 Subversion 我们希望它忽略的文件和目录。我们通常不希望生成的文件(例如类文件)、临时文件等存储在 Subversion 信息库中,所以我们需要告诉 Subversion 忽略它们。关于机制我们不需要了解太多,只需知道 Subversion 使用一个特殊的属性来识别应该忽略的对象就够了。Oracle JDeveloper 提供了一整套默认忽略模式,然而您也可以使用 Filters 对话框自己添加:当您将您的应用程序导入 Subversion 时,您本地磁盘上的原始文件仍然是一组本地文件;本地副本根本不具有到信息库的连接(它仅仅是一个本地副本而不是一个 Subversion“工作副本”)。通常导入您应用程序后的下一步是删除您的本地副本并签出信息库中的工作副本。Oracle JDeveloper 在下一个对话框 Options 中会向您提供一个快捷选项:现在您可以查看导入选项汇总并完成导入:您可以在 Oracle JDeveloper 的 SVN Console Log 窗口中查看导入流程的进度。导入完成后,您应该可以看见签出操作的进度(如果您选中了在导入后自动执行签出的复选框)。签出完成后,请查看 Application Navigator(您可能需要先单击刷新图标)。您现在应该可以看见更多的信息,如下所示:· 每个项目都显示了生成工作副本的信息库(此屏幕截图中为 jstegema-)。· 每个文件在左下方都有一个“state overlay”图标,用来显示工作副本文件的状态。在此例中,所有的图标为圆圈,表示这些文件在签出后还没有经过本地修改。· 每个文件都显示了它的版本号(此屏幕截图中为 2)。文件版本号为 2(而不是 1)是因为信息库创建为版本 1 而应用程序导入为版本 2。进行本地更改并向 Subversion 提交现在应用程序的本地副本是一个 Subversion“工作副本”,这意味着该副本与 Subversion 信息库相关联。Subversion 通过使用工作副本中名为 .svn 的隐藏目录维护此关联,如下所示:您不应更改 .svn 目录中的内容,因为它们由 Subversion 自动维护。既然我们的应用程序已经接受版本控制了,那么让我们来对应用程序做些更改并将它们保存到 Subversion 信息库中。我们对 Model 项目中的 Regions 实体对象 (EO) 做一个简单的修改,设置它的更新批处理的调优属性。在做出修改并保存 EO 后,您将注意到 Oracle JDeveloper 中发生了一些变化。首先, Regions E0 的 state overlay 图标变为星号,这说明我们做了本地更改但还没有保存(或“提交”)到 Subversion 信息库:其次,如果您查看 Subversion Pending Changes 窗口:您将会看到您修改过的 Regions.xml 文件被列为传出更改:在 Pending Changes 窗口中,可以很方便地查看您当前程序中已在工作副本中进行更改的文件(传出)、在工作副本中新创建的但没有添加到 Subversion 的文件(待处理项)以及其他人在 Subversion 信息库中做的但没有应用到工作副本的更改(传入)。现在来说,因为我是应用程序的唯一开发人员,所以没有传入更改而只有一个传出更改。接下来,我将完成我的更改设置,为项目中的 Employees 和 Jobs EO 设置相同的调优属性。当我完成时,state overlay 图标和 Pending Changes 窗口将反映出我还有三个文件中的本地修改未提交:现在我已更改完毕,可以将它们提交给信息库了。我将使用 Application Navigator 的快捷菜单来提交我工作副本中的所有更改:当我选择 Commit Working Copy. 后,Oracle JDeveloper 提示我输入注释。我们知道,我们应该始终提供有帮助的注释,以便项目团队一眼就可以看到已做的更改:在更改提交后, SVN Console - Log 将显示操作结果:state overlay 图标也变回了实心圆圈以表示没有未提交的本地修改。我提交的文件的版本号相应地增加,显示文件目前为版本 3:Pending Changes 窗口显示无传出更改(我们已经提交了所有本地更改):总结您现在已经掌握了在单一用户环境下结合使用 Subversion 和 Oracle JDeveloper 11g 的相关信息。本系列的下一篇文章将介绍当有其他开发人员加入并同时作出更改的时候,您应该如何处理。Oracle ADF 开发必读 : 第 2 部分借助 Subversion 进行版本控制:在团队环境下管理版本在本系列的第 1 部分,您已学习了安装 Subversion 、设置信息库和使用 Oracle JDeveloper 11g 执行基本操作等基础知识。在第 2 部分中,您将了解当您将另一位开发人员加入到团队中后,Oracle JDeveloper 和 Subversion 将如何工作。在团队中加入新的开发人员如果您从第 1 部分就按照教程进行操作,您一定记得我们创建了两个可以访问 Subversion 信息库的用户 john 和 josephine。到目前为止,John 一直是此应用程序唯一的开发人员;我们来看看 Josephine 如何加入到团队中并对该应用程序进行操作。Josephine 要做的第一件事是从信息库签出一个应用程序的副本。记住“签出”应用程序副本只是在本地设备上放入一个应用程序的本地副本(以及一些日常管理目录)。这样,您就能知道本文中都是谁在执行操作,我将 Josephine 作为本文的主角。为签出应用程序的副本,Josephine 从 JDeveloper 的 Versioning 菜单中选择 Check Out:图 1 签出应用程序副本因为 Josephine 没有定义信息库连接,所以她填写了信息库信息、提供了她的凭证并测试了连接:图 2 创建 Subversion 连接因为她希望在代码的开发主线(“trunk”)上工作,所以她选择了 trunk 目录并为签出副本提供了她本地硬盘驱动器上的目标路径:图 3 指定签出文件的位置然后,Oracle JDeveloper 从信息库中签出应用程序代码的最新版本并将其打开。Josephine 现在可以对应用程序代码进行操作了。为项目添加新文件现在,Josephine 是团队的一员,她希望将一个新的 Java 源代码文件添加到 ViewController 项目中。因为团队使用的是 Subversion,所以她不需要做任何特别的事情来创建新的 .java 文件并将其添加到她的项目中;只需像往常一样在 Oracle JDeveloper 中工作。Josephine 创建了一个新的 .java 文件并在其中创建了一些方法:图 4 新 Hello.java 文件当 Josephine 在 Application Navigator 窗口中看到新文件时,她将看到她的文件上有一个蓝色的 x 图标,这表示该文件还没有与 Subversion 信息库相关联:图 5 Hello.java 显示蓝色 x 覆盖图标而且,当她查看 Pending Changes 窗口时(Oracle JDeveloper 菜单中 Versioning -> Subversion -> Pending Changes),她将看到她的新 Hello.java 文件在 Candidates 选项卡中列出,这表示她有一个文件待添加到版本控制中:图 6 Pending changes 显示 Hello.java 为待添加项目为了将新文件添加到版本控制,她选择该文件并使用 Pending Changes 窗口中的“add”按钮(加号 + 图标):图 7 通过 Pending Changes 窗口添加待选文件或者在 Application Navigator 窗口中右键单击该文件并选择 Add.:图 8 通过 Application Navigator 上下文菜单添加待选文件两种方法的结果都一样 使用 Oracle JDeveloper 中的一项功能经常会有不止一种方法。添加文件将会对其进行标记以添加到信息库中;注意添加文件不 会将更改提交到信息库中。当 Josephine 查看 Pending Changes 窗口中的 Outgoing 选项卡时,她或许会感到一点惊讶,因为显示她有五个传出更改,而不是仅一个:图 9 Pending Changes 窗口显示需要添加的文件和目录原因是 Subversion 不仅对目录,而且对文件也可以进行版本控制;添加一个新的 Java 文件也创建了一个目录结构。现在,Josephine 已完成更改,她已经准备好将它们提交到信息库中了;在她这么做之前,她的更改只是存储在她的本地硬盘驱动器中而不能供团队中的其他人使用。在第 1 部分,John 使用 Oracle JDeveloper 中的 Commit Working Copy 操作提交了他的更改;Josephine 的做法将会有一点不同。她选择了 Pending Changes 窗口中的所有项目(一个文件和四个目录)并单击 Commit 按钮:图 10 向信息库提交更改然后,她提供了提交消息/注释以便其他人知道她做出了什么修改:图 11 为更改提供注释然后,Oracle JDeveloper 会将更改发送到信息库,Subversion 将保存它们并递增修订号。从信息库更新应用程序因为 John 的工位就在 Josephine 的旁边,所以他可以和她讨论项目并得知她向项目中添加了一个新的 Java 类。他回到自己工位,在 Oracle JDeveloper 中打开他的项目副本,可在任何地方都没能找到该新文件:图 12 John 的应用程序(Hello.java 在哪里?)为什么 John 看不到它?因为每个开发人员(John 和 Josephine)都在对应用程序的本地副本进行操作。当另一个团队成员提交更改时,更改不 会自动从信息库复制到本地工作副本;更改仅在开发人员特别要求从信息库更新 他或她的工作副本时才会进行复制。通常,开发人员的最佳做法是定期在开始新工作前更新他们的工作副本。然而,如果不更新,开发人员怎么知道应用程序有更改需要更新呢?让我们回到 John 的工作会话以进行演示。当 John 查看 Pending Changes 窗口时,他注意到在 Incoming 选项卡中有新的文件:图 13 Pending Changes 窗口中显示传入更改通常,John 可以通过在 Pending Changes 窗口中选择要传入的更改并单击 Update 按钮来更新他的工作副本。但是,由于一些原因,在他的 Oracle JDeveloper 11g 副本中,该按钮不可用,所以 John 使用了Application Navigator 窗口中的 Update Working Copy.:图 14 更新工作副本在显示的对话框中,他接受了默认值并单击 OK:图 15 Update Working Copy 对话框在 Oracle JDeveloper 从信息库更新应用程序后,John 现在可以在 Application Navigator 窗口中看到 Josephine 新添加的文件:图 16 John 的应用程序显示 Hello.java最佳实践:确定公用代码样式设置John 打开 Hello.java 查看 Josephine 都做了什么。他首先注意到代码格式的样式和他的不一样;相对于左大括号在同一行的格式,图 17 Josephine 的代码样式他更喜欢左大括号在下一行的样式:图 18 John 的代码样式所以他做的第一件事是使用 Oracle JDeveloper 中的 Reformat 命令让文件更易于阅读。然而,当他这样做之后,文件的内容就被更改了,并且产生了一个需要提交给信息库的更改。如果他提交更改,当 Josephine(她更喜欢原来的代码样式)下一次更新她的工作副本时,会将代码格式重新设置为她喜欢的样式。如果他们不协商出一个公用的样式,John 和 Josephine 将永远在 Java 代码上打乒乓,无限次地重新格式化另一个人的代码。这个案例的教训是,当在团队环境下使用版本控制时,您需要预先就公用标准进行协商以避免出现这样的问题。幸运的是,Oracle JDeveloper 具有一个用于指定代码样式首选项的选项:图 19 在 Oracle JDeveloper 中设置代码样式首选项John 喜欢的样式是 JDeveloper Classic,而 Josephine 喜欢的样式是 Java Code Conventions。John 和 Josephine 进行了短暂的讨论,同意都使用 JDeveloper Classic 设置。John 向 Subversion 提交了他对 Hello.java 更改(并提供了关于他所做更改的注释):图 20 John 的更改注释Josephine 更改她的代码样式首选项,看到 Pending Changes 窗口中 Incoming 选项卡中的更改,并将更改更新到她的工作副本:图 21 Josephine 将 John 的更改更新到她的工作副本解决冲突如前文所述,开发人员的工作副本只是其本地硬盘驱动器上的一个本地应用程序副本,所以才有了两个开发人员同时对一个文件进行操作的可能性。Subversion 提供了处理这种情况的机制。有两个基本用例:第一个,如果一个开发人员在文件的开始部分对某些内容进行了编辑,而另一个开发人员在同一文件的结尾部分对某些内容进行了编辑,Subversion 可以合并这些更改。Subversion 通过一个简单的文本比较算法来完成合并,所以它不能确保更改是兼容的,但可以通过修改相同的行来确保更改没有彼此冲突。在另一个用例中,如果两个开发人员都编辑了同一个文件的同一行,Subversion 就不能合并这两个更改而需要用户手动去解决冲突。幸运的是,Oracle JDeveloper 11g 提供了一个绝妙的可视冲突解决机制。我们来看第一个用例,以 John 和 Josephine 的 Hello.java 文件为例。首先,John 对 sayHello 方法做了一个简单的更改以让它使用更随意的英语:图 22 John 对 Hello.java 的“非正式英语”更改同时,Josephine 对 sayGoodbye 方法进行了修改以使它使用斯瓦希里语:图 23 Josephine 对 Hello.java 的斯瓦希里语更改之后,Josephine 向 Subversion 提交了她的更改:图 24 Josephine 提交她的斯瓦希里语更改现在,有趣的是 当 John 尝试提交他的更改时,他收到了以下错误消息:图 25 错误信息提示 John 他的 Hello.java 副本已过期Subversion 想要告诉他的是信息库的 Hello.java 版本已与他上次更新的版本不同,他必须先更新文件然后才能提交更改。所以 John 更新了他的工作副本,更新之后的 Hello.java 如下:图 26 Josephine 的更改合并到 John 的工作副本中的 Hello.java注意,Subversion 已经自动将 Josephine 的更改合并到 John 的工作副本中。Subversion 不 能告诉我们更改合并后会不会仍有效(一个更改使用非正式英语而另一个更改使用斯瓦希里语);它们放在一起是否有效由 John 来决定。我们假设 John 认为这两个更改还不错;要记住目前更改还仅在 John 的工作副本中而不在信息库中。所以 John 提交了修订后的 Hello.java,并仅对他的更改做了注释:图 27 John 提交合并后的 Hello.java 文件最后,当 Josephine 更新她的工作副本时,她将得到一个包含她和 John 两个人的更改的 Hello.java 的最新版本。现在让我们看一下,当两个人对同一文件做出了更改而 Subversion 不能自动合并更改时会发生什么。Josephine 对 Hello.java 进行的编辑如下:图 28 Josephine 对 Hello.java 做出了一些大的更改同时,John 对他的工作副本的编辑如下:图 29 John 也对 Hello.java 做出了一些大的更改这次 John 先提交了他的更改。现在,如果 Josephine 尝试提交 Hello.java,她将获得相同的提示她本地副本过期的错误消息。然而,当她尝试更新她的工作副本时,她将注意到三个问题。首先,在 SVN Console - Log 窗口中,她将看到一个冲突的提示:图 30 提交时日志中显示的冲突其次,在 Pending Changes 窗口中,她的文件副本将标记为有冲突:图 31 Pending Changes 窗口显示文件有冲突最后,在 Structure 窗口中,她将看到几个额外的 Hello.java 副本:图 32 Structure 窗口显示 Hello.java 的其他版本这些文件是 Subversion 创建用来帮助解决冲突的,但是不必手动解决冲突,Oracle JDeveloper 提供了一个非常好的可视合并工具,Josephine 可以通过右键单击 Hello.java 并选择 Resolve Conflicts 来激活该工具:图 33 启动可视合并工具可视合并工具在左侧显示 Josephine 的文件版本(名为 Hello.java.mine),在右侧显示来自信息库的当前版本(名为 Hello.java.r<修订号>),在中间显示合并结果:图 34 可视合并工具显示 Hello.java 的三个版本有冲突的更改清晰地标为红色。为了解决冲突,Josephine 只需选择每行应该在最终文件中出现的版本,并通过单击相应的绿色箭头(> 或 <)将其合并到中心窗格中。例如,我们假设 Josephine 选择了她的版本的 sayHello 和 John 版本的 sayGoodbye。结果如下:图 35 解决冲突后的可视合并工具现在所有的冲突都解决了,她可以单击 Save and Complete Merge 按钮完成操作。当她刷新 Application Navigator 窗口后,所有的冲突构件(Hello.java 的额外版本)都将删除,她可以用正常的方式向信息库提交她的更改。John 现在可以更新他的工作副本,并将看到文件的新版本。Praise 和 Blame 命令Subversion 命令行程序有两个名字很奇怪的命令 praise 和 blame,可以用来识别最后提交对文件每一行的更改的人。praise 和 blame 命令的作用是相同的;通常,当您想要找出谁做了有趣或正确的更改时,可以使用 praise,而当您要找出谁引入了一个错误时,可以使用 blame。Oracle JDeveloper 通过“批注”可以采用可视的方式公开这一信息。要查看赞扬/批评信息,只需右键单击编辑器,并在 Versioning 子菜单中选择 View Annotation:图 36 显示批注Oracle JDeveloper 将在左侧边列显示彩色条;当您将光标移动到它们上方时,Oracle JDeveloper 将会显示以下信息:最后提交对该部分更改的开发人员、提交的修订号以及提交日期:图 37 批注显示 John 修改了一部分代码添加标记现在您已经了解了如何使用 Subversion 的基础知识,下面我们来看另一个常用活动:“添加标记”。添加标记是用于在特定时间点标注或标记源代码副本的过程。按照惯例,已添加标记的副本不会再次更新和提交;它就是一个时间点参考,可以让您轻松获得在特定时间点上存在过的代码副本。当将应用程序的一个版本发布到生产中时,会经常使用添加标记,这样您可以轻松地找到已部署的代码版本。回到由 John 和 Josephine 组成的演示团队,在做了修改后,他们已经准备好将其代码发布到生产中,并且决定将第一个版本称为版本 1.0。作为其发布的一部分,他们希望标记代码的版本为 v1.0,这样,他们可以清楚地知道哪一个版本的代码已发布到生产中,并且可以随时签出代码的 1.0 版进行调试。Subversion 中的标记就是一个代码的副本,按照惯例,放在“tags”目录中。为创建标记,Josephine 在 Versioning 菜单中选择 Branch/Tag:图 38 选择分支/标记Oracle JDeveloper 然后显示一个对话框,在这里,Josephine 可以提供粘贴和复制的信息库详细位置。Josephine 希望标记是其当前工作副本的代码,所以她保留了复制源的默认设置 Working Copy。为指定目标位置,她在信息库中指定了一个新的标记子目录:图 39 为标记指定位置如果选中 Switch to new branch/tag 复选框,会将 Josephine 的工作副本指向标记而不是指向主干;因为惯例是永远不更新标记,Josephine 希望将她的工作副本继续指向主干以便她能继续工作,所以她没有选中 Switch to new branch/tag。在 Josephine 单击 OK 后,她的工作副本被复制到 v1.0 标记目录。如果她使用 Web 浏览器查看信息库,将看到一个标记为 v1.0 的代码副本:图 40 Subversion 信息库中新创建的标记以后的任何时候,开发人员可以轻松地使用标记的 URL 作为签出地址签出版本 1.0 的代码副本。关于 Subversion 值得注意的一点是,这样的代码副本几乎不占用空间!Subversion 只存储一个到复制源的指针;副本不更新,它就几乎不占用空间。分支和合并当开发团队需要创建一个代码分支以独立于主干进行更改时,就引出了另一个 Subversion 常见用例。常见的创建分支的情景是当团队尝试稳定代码为生产发布做好准备时;团队的部分成员负责查找和修复错误,而团队的其余成员则继续为下一版本开发新特性。稳定团队需要拥有其独立于主干的错误修复代码分支(将包括还不能用于生产的新特性)。当稳定团队找到错误并修复时,还需要将这些错误修复传输回主干代码。当分支代码可用于生产时,将对其进行标记并部署到生产中。要了解分支的其他常见用例,请参阅借助 Subversion 进行版本控制电子书。我们来演示“针对产品发布的稳定”用例,其中将用到 Oracle JDeveloper、Subversion 以及我们熟悉的 John-and-Josephine 开发团队。John 将负责准备应用程序的下一个生产发布(版本 1.1),而 Josephine 将继续为版本 2.0 开发新特性。John 首先要做的是创建一个名为 stabilization_1.1 的分支。为此,他使用了进行标记时使用的 Branch/Tag 命令。这里和标记用例主要有两点不同:首先,按照惯例,分支放在信息库的 Branches 子目录下。其次,因为 John 想要对分支做出更改,所以他要将他的工作副本改

    注意事项

    本文(ORACLEADF开发详细介绍.docx)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开