2012年4月17日星期二

JDev_034:使用JDeveloper 11g 集成Maven

开发环境:JDevloper 11.1.2.1.0。

重要步骤说明:

1.下载并安装Maven
下载地址:http://maven.apache.org/。
目前Maven的最新版本已经到了3.0.4,由于JDeveloper11gR2只支持Maven2,所以我还是下载了Maven2.2.1。
解压缩apache-maven-2.2.1.zip到C:\apache-maven-2.2.1。

2.设置Maven2的环境
在用户变量中设置:
M2=%M2_HOME%\bin
M2_HOME=C:\apache-maven-2.2.1
MAVEN_OPTS=-Xms256m -Xmx512m


3.使用Mave创建一个项目
在C:\mvnProjects下,运行脚本:
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app
注意,执行上面的脚本需要保持网络畅通,因为Maven会从远程Repository下载一些Jars到本地的Repository.
如果build 成功,会生成如下内容的pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>my-app</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>


4.导入刚刚使用Maven2创建的项目
(1)选择File-->Import

(2)选择Maven Project

(3)设置Maven项目的位置
建议勾上“Copy Projects in Application”,这样会把Maven项目复制到JDeveloper工作目录下。

(4)右键pom.xml,选择Run Maven Goals-->Manage Goals,打开Maven项目的属性设置窗口。
你可以为项目增加一些Goals,比如package,compile等等。

Maven的安装目录和版本

项目依赖的第三方Jars

使用的JDK版本

本地和远程的Repositories

Maven的参数设置

(5)右键pom.xml,选择Run Maven Goals-->选择你要运行的Goals
现在你就可以创建或修改代码,然后选择你要运行的Maven Goals。

5.使用JDeveloper直接创建Maven项目
(1)新建Application,选择Maven Application

(2)设置Application Name

(3)设置Project Name

(4)设置Maven Project的设置

(5)创建Java类

(6)修改pom.xml

(7)右键pom.xml,选择Run Maven Goals-->Manage Goals,打开Maven项目的属性设置窗口。
你可以为项目增加一些Goals,比如package,compile等等。
(8)如果需要,你可以为项目增加其它第三方Jars
比如你可以为项目增加ADF Faces Runtime 11 Library,注意所有依赖Jars会复制到本地的Repository中。

(9)右键pom.xml,选择Run Maven Goals-->选择你要运行的Goals
现在你就可以创建或修改代码,然后选择你要运行的Maven Goals。

参考文献:
1. http://www.oracle.com/technetwork/developer-tools/jdev/maven11g-090173.html

2012年4月13日星期五

JDev_033:使用JDeveloper 11g 集成SubVersion

开发环境:JDevloper 11.1.2.1.0。

本实验之前,需要先安装SubVersion。
如果是Windows平台,可以参考《安装VisualSVN Server》。

重点步骤说明:
1. 连接SubVersion
(1)选择菜单Versioning-->SubVersion
(2)复制并粘贴Repository URL,设置连接名称,用户名/口令,并测试通过。


2. 签入签出项目
(1)选一个应用,选择菜单Version Application

(2)选择签入主干目录:trunks

(3)选择源代码目录:

(4)选择过滤条件:一般只签入源代码,其它编译后产生的文件不签入。

(5)选择签出项目
项目被签入时,还是保留在本地的一些文件,与SubVersion没有任何关系。
要想与SubVersion有关系,必须把项目签出。

(6)签出项目后,会发现所有的项目文件都有一个“圆圈”图标,旁边是该文件的版本号。
“圆圈”图标表示这些文件签出后,还没有经过本地修改。
文件版本号为 2(而不是 1)是因为信息库创建为版本 1 而应用程序导入为版本 2。

(7)查看项目目录,发现多了.svn隐含目录。

(8)查看SubVersion的Repository目录。


3. 修改代码,签入项目
(1)修改Jobs EO,发现“圆圈”图标变成了“*”图标,表明该文件经过了本地修改,还未签入。

(2)选择Versioning-->Pending Changes,查看所有未提交的改动。

(3)因为当前只有一个用户,所以显示只有一个传出修改,没有其他人同时修改该文件,没有传入修改。

(4)选中应用,选择Versioning-->Commit Working Copy
提交修改的工作副本。

(5)添加提交注释。
注意,这里也可以设置Lock,这样提交时其它用户无法修改。

(6)提交成功后的日志信息。

(7)提交成功后的项目信息。
修改并提交后的Jobs EO的图标变成了“圆圈”,同时版本升为3。


参考文献:
1. http://www.oracle.com/technetwork/developer-tools/jdev/subversion-085144.html

Tools_016:安装VisualSVN Server

VisualSVN Server是VisualSVN公司出品的基于Windows平台的一个Subversion软件。
下载地址:http://www.visualsvn.com/server/

重点安装步骤说明:
1. 选择安装VisualSVN Server和管理控制台


2. 安装设置
(1)安装位置
(2)仓库(Respositories)位置
(3)Server Port: 这里不使用HTTPs,并且设置端口为8181,因为我机器上有其它应用占了8080端口。
(4)使用SubVersion自身的用户验证。


3. 安装完毕后,启动Server


4. 创建Repositories
(1)创建一个名为adf的Repository

其中,
trunk:主线开发将在这里进行。
tags: 识别应用程序发布生命周期中的重点包括对特定的代码修订进行标记。按照惯例,已标记的修订存储在tags 中。
branches: 有些时候,源代码由于很多原因(例如开发新特性而不影响 trunk 或稳定代码以便发布)需要进行“分支”处理。按照惯例,分支创建在 branches中。

(2)右键Repository名称,可以复制其URL,客户端连接SubServion时需要这个URL。


5. 创建SubVersion 用户

JDev_032:使用JDeveloper 11g 集成JUnit 测试 ADF-BC

开发环境:JDevloper 11.1.2.1.0。

JDeveloper专门为测试ADF-BC提供了一个插件:BC4J JUnit Integration。
下面就介绍如何使用该插件。

1. 安装BC4J JUnit Integration Extension


2. 单独创建一个测试Project
为了不与Model项目的源代码混淆,这里单独建立一个测试Project。
(1)选择Custom Project

(2)选择新建Unit Tests,选择ADF Business Components Test Suite

(3)选择ADF Business Components 项目,选择AM

(4)生成如下AM测试类


3. 修改AM或VO测试类
默认情况下,只会为VO生成一个testAccess测试方法
    @Test
    public void testAccess() {
        ViewObject view = fixture1.getApplicationModule().findViewObject("JobsView1");
        assertNotNull(view);
    }

下面,我们增加几个测试。
(1)测试创建Job时,如果不设置JobId,是否会抛出AttrValException异常
@Test (expected = AttrValException.class)
    public void testJobIdRequired() {
        ViewObject view = fixture1.getApplicationModule().findViewObject("JobsView1");
        Row r = view.createRow();
        r.setAttribute("JobTitle", "Oracle CEO");
        r.validate();
    }

(2)测试创建Job时,JobTitle的长度至少为6。
    @Test (expected = AttrValException.class)
    public void testJobTitleAtLeast6Characters() {
        ViewObject view = fixture1.getApplicationModule().findViewObject("JobsView1");
        Row r = view.createRow();
        r.setAttribute("JobId", "CEO");
        r.setAttribute("JobTitle", "CEO");
        r.validate();
    }


3. 运行测试
右键JobsView1VOTest,选择运行,结果如下:

可以看出,testJobTitleAtLeast6Characters测试没有通过,因为测试期望抛出AttrValException,但是并没有抛出。

修改Jobs EO的JobTitle验证规则如下:

再次运行,发现测试都通过了。


Project 下载:ADF_Table(JUnit).7z

2012年4月9日星期一

JDev_031:使用JDeveloper 11g 集成JUnit

开发环境:JDevloper 11.1.2.1.0。

重点步骤说明:

1. 为JDeveloper安装JUnit Extensions


2. 创建测试代码
(1)建立名为test源代码目录
为了不与项目自身的代码混淆,同时又为了保持一定一致性,这里手工test目录,其中的package目录结构与src目录下源代码目录结构一样。
右键项目,增加另一个源代码目录,并置顶。
注意,默认创建的Java会创建在第一个源代码目录下,因此创建完测试类后,要把原来的src目录置顶。

(2)创建Test Case

(3)选择要测试的Java类和方法

(4)设置测试类的名字和方法

(5)右键项目,查看项目属性:Liberary and ClassPath
发现Junit 4 Runtime库已经加到项目中,说明一切正常,可以运行测试了。

(6)右键项目,点击"Run Unit Test in ...",查看项目属性:Liberary and ClassPath


3. 运行Unit Case
(1)测试失败的效果

(2)测试通过的效果


Project 下载:MyFirstApplication(Junit).7z

参考文献:
1. https://blogs.oracle.com/bwb/entry/unit_testing_with_junit_and#Verify_the_JUnit_Extension_in_JDeveloper
2. http://download.oracle.com/otndocs/OTNVDD-REA/ppt/ADF_VDD_Testing.pdf
3. http://www.oracle.com/technetwork/articles/adf/part5-083468.html
4. https://kr.forums.oracle.com/forums/thread.jspa?messageID=9899124