【java教程】实践MDA之AndroMDA教程:[第二节] 示例工程准备
该小节介绍示例工程的概况,并通过演示一步一步建立工程目录。有关建立 AndroMDA 工程的详细介绍请参见其官方网站的文档:http://team.andromda.org/docs/starting.html#My_first_AndroMDA_project。
在执行androMDA的Maven命令时,我强烈推荐你使用UltraEdit编辑工具的内嵌执行DOC命令的功能。因为在UltraEdit中执行DOC命令可以保存所有的DOC输出,方便跟踪和检查错误。操作步骤如下:
1、启动UltraEdit编辑工具。
2、按F9键,出现如下的对话框:
在执行androMDA的Maven命令时,我强烈推荐你使用UltraEdit编辑工具的内嵌执行DOC命令的功能。因为在UltraEdit中执行DOC命令可以保存所有的DOC输出,方便跟踪和检查错误。操作步骤如下:
1、启动UltraEdit编辑工具。
2、按F9键,出现如下的对话框:
其中“命令”表示要执行的DOC命令,工作目录表示执行DOC的当前目录。
3、按回车键或者点击对话框中的确定按钮,开始执行输入的DOC命令。
自动下载Maven插件
用过 maven 的朋友应该比较清楚它的工作机制,它能根据需要自动下载所需要的第三方jar包。代码生成工具 androMDA 是由 maven 实现的。因此,在使用 androMDA 的时候,需要 androMDA 的 maven 插件,有这个插件,androMDA 就可以利用 maven 命令来完成自己的任务了。因此,我需要用一个命令来下载 androMDA 插件以及其他所需的第三方插件,下载插件的命令如下:
maven plugin:download -DgroupId=andromda -DartifactId=maven-andromdapp-plugin -Dversion=3.1
如果第一次在本机使用androMDA,则可能需要几分钟的时间下载,并且在这个过程中需要保证网络畅通,否则会出现错误。
建立工程目录
该教程中的示例工程将位于我本机的D:\MyProject下面。因此设置该目录为执行DOC命令的当前目录。然后执行如下命令:
maven andromdapp:generate
执行该命令时,命令行要求输入一些工程相关的信息,下图是示例工程的输入:
__ __
\/ __ _Apache__ ___
\/ / _` \ V / -_) ' \ ~ intelligent projects ~
_ _\__,_\_/\_____ v. 1.0.2
Please enter your first and last name (i.e. Chad Brandon):
Wang JiaKuan
Please enter the name of your J2EE project (i.e. Animal Quiz):
Car Management
Please enter the id for your J2EE project (i.e. animalquiz):
CarManagement
Please enter a version for your project (i.e. 1.0- SNAPSHOT):
1.0
Please enter the base package name for your J2EE project (i.e. org.andromda.samples):
com.widen.carmanagement
Would you like an EAR or standalone WAR (enter 'ear' or 'war')?
war
Would you like to use the jBpm workflow engine, it uses Hibernate3 (enter 'yes' or 'no')?
no
Please enter the hibernate version number (enter '2' for 2.1.x or '3' for 3.0.x):
3
Would you like your web tier to use JSF or Struts? (enter 'jsf' or 'struts'):
struts
Would you like to be able to expose your services as web services? (enter 'yes' or 'no'):
no
执行完命令后工程目录就自动的创建好了,在 D:\MyProject 目录下面存在这样的目录结构:
有关详细信息请参见文档:http://team.andromda.org/docs/getting- started/java/index.html。
工程相关说明
在工程的根目录下有一个readme.txt(示例工程:D:\MyProject\CarManagement\readme.txt)文件。该文件详细描述了有关androMDA工程目录结构以及常用的Maven命令。下面对工程目录结构和常用Maven命令做详细的说明。
目录结构说明
[root]: 工程根目录下包含几个文件,用来全面的控制构建过程和公共属性
[root]/project.xml: 该文件包含了有关工程的信息,你可以自己添加更多的信息,只要不违反 Maven POM 的Schema定义。参见:http://maven.apache.org/reference/project-descriptor.html
[root]/maven.xml: 该文件定义了可以从工程根目录执行的 Maven 命令(goals),大部分时间你也可以在子模快中调用Maven命令,详情参考示例
[root]/project.properties: 该文件定义了工程的一些公共属性,你可以通过修改这些属性来配置工程
[root]/build.properties: 该属性文件了定义了工程所依赖的第三方库的版本信息,也定义了工程的唯一标识。通常情况下该文件不需要修改(除非将工程升级到 AndroMDA 的其他版本的时候需要修改)
[root]/mda: MDA 模块是工程的核心,AndroMDA通过这里的配置来生成应用程序所需的文件。
[root]/mda/project.xml: 包含了 AndroMDA 依赖的其他工程信息
[root]/mda/project.properties: AndroMDA 的属性可以在这里配置,例如可以配置是否进行错误验证
[root]/mda/maven.xml: 该文件不需要编辑
[root]/mda/src: merge- mappings等额外的配置文件可以存放在该目录下,该目录下的/uml子目录里包含UML模型文件,AndroMDA将根据该文件生成代码
[root]/mda/conf/andromda.xml: 配置 AndroMDA 和它的组建,最终要的是各个 cartridge 设置要放在各自的名字空间下面(namespace),全局设置要放在'default'名字空间下面
[root]/common: COMMON 模块集中存放各个模块共用的资源文件和类文件。
[root]/common/project.xml: 列出该模块依赖的其他工程
[root]/common/target: 存放生成的用来共享的资源文件和Java类文件,例如值对象(value objects)和异常(exceptions)
[root]/core: CORE 模块集中存放使用了Spring框架的资源文件和 Java 类文件,在Spring框架下可能使用 Hibernate 和(或)EJB。
[root]/core/project.xml: 列出 Spring 依赖的其他工程
[root]/core/project.properties: 指明了 Spring 的构建的属性,该文件不需要修改
[root]/core/maven.xml: 定义了一些 Maven 命令,这些命令用来生成建立和删除表的DDL代码,其中使用了 Hibernate 的 SchemaExport 功能
[root]/core/src: 需要手工实现的 Spring 相关的类被生成后存放在这里,重新生成代码时不会被覆盖,它们包括 Service 实现、DAO 实现、Entity 实现
[root]/core/target: 这里存放了 Spring 相关的资源文件和类文件,在每次使用 Spring cartridge 重新生成新的代码的时候它们将被覆盖;包括 Hibernate 实体类和相应的 *.hbm.xml 影射文件,包括 Service 和 DAO 的基类,你也可以在该目录下找到建立和删除表的数据库脚本
[root]/web: WEB 模块集中存放所有用来构建表示层的资源文件和类文件,这里也用来将其他模块打包建立可发布的war文件。
[root]/web/project.xml: 列出 WebApp 依赖的其他工程
[root]/web/project.properties: 指明 Spring 的构建属性,你可以通过设置 precompileJsps=true 使得所有JSP文件进行预编译
[root]/web/maven.xml: 定义 JSP 预编译相关的 Maven 命令,取消 war:init preGoal 的注释,使得 copy-over 的特性可用
[root]/web/src: controller 的实现类和可编辑的资源包生成后将被存放在这里,你可以将你自己的 JSP 文件放在这里,在打包生成war文件的时候将自动拷贝这些JSP文件并覆盖到war包中
[root]/web/target: 一个可以部署的war包将生成并存放在这里
常用命令说明
为了成功的构建你的工程,你需要知道如何调用已有模块的构建过程,以下是一些常用的 Maven 命令:
%> maven install
简单的构建所有模块
%> maven deploy
收集所有信息,建立可部署的war包,然后自动部署到设置好的应用服务器,但你需要在这之前构建好所有其他模块
%> maven clean install deploy
删除所有生成的文件,重新构建和部署,/src 目录下的文件不会被删除
%> maven core
只构建 core 模块
%> maven web
只构建 web 模块
%> maven nuke
清除所有 /target 目录,从源代码目录(从 common 模块,core 模块和 web 模块)中删除所有以 'Impl' 结尾的 Java 类文件,该命令(goal)会给出确认提示,但是在使用的时候还是要格外小心,因为它会删除你所有用手工编辑过的文 件
%> maven create-schema
调用生成的DDL代码,并紧接着告诉数据库给相应的实体对象建立(create)数据表
%> maven drop-schema
调用生成的DDL代码,并紧接着告诉数据库给相应的实体对象删除(drop)数据表
%> maven start-andromda-server
启动 AndroMDA 服务器。当这个服务器运行的时候能够很大程度的提高代码生成的效率,而且此时需要在另外一个控制台中执行其他 maven 命令。
%> maven stop-andromda-server
停止 AndroMDA 服务器
%> maven mda
将各个设计模块生成代码。
注意:在执行命令的时候你可以使用 '-o' 选项来避免 maven 下载其他东西,只有在线构建的时候才不需要这个选项。每个模块生成后的jar等将被安装在本地 maven 仓库,可能存在于这个目录下:
(Windows)
C:\Documents and Settings\Administrator\.maven\repository\CarManagement\
(*nix)
/home/Administrator/.maven/repository/CarManagement/
遇到问题请到 http://javava.blogspot.com 提问。



3 条评论:
救命啊~~,大哥.
我按照你教程上的步骤一步一步做过来,但是做到执行"mvn plugin:download -DgroupId=andromda -DartifactId=maven-andromdapp-plugin -Dversion=3.1"这个命令的时候就过不去了.总是提示"Required goal not found:plugin:download"
我下载的maven是2.0.4版本的,是不是2.0的maven和1.0有些不一样啊?
我就是在AndroMDA官方网站上找的教程也和你一样说的是1.0方面的.我现在因为项目的关系,很着急这方面的资料,能否请大哥教教我该怎么办!
对不起,我忘了.如果可以的话,能否发到我的邮箱里头.
ivon@china.com.cn
java编程...
java代码将文件或目录移动到另一个目录
发表评论