创建配置项目
翻译者:Jason S.H.Chen
(英文地址:
http://www.andromda.org/index.php?option=com_content&view=article&id=107:starter-app&catid=42:getting-started-java&Itemid=89)
创建项目
在本节,我们将使用AndroMDA开始应用系统的构建,后面我们将在此基础上逐步添加完成所有的功能。我强烈建议你保留前面章节下载的完成的可运行的日志跟踪系统,以便必要时,可建你自己正在开发的系统和他进行比照。
开始构建系统前的最后一个忠告:务必仔细正确地一步一步按照下面讲的步骤进行,不要期望有什么其他的捷径(因为就是捷径,呵呵)。手册后面安排的每个步骤都有他自身的理由,这些步骤足够保证你顺利完成系统的开发。
好的,我们已经整装待发了。按照下面的步骤开始我们的系统开发工作吧:
1. 开启DOS窗口,并将DOS窗口的当前目录切换到你希望应用系统生成到的那个目录。这里,这里我们选择c盘,应用系统将被创建到c:\ timetracker这个目录。注意:如果你打算将应用系统创建到不同的目录下,确保在整个文件路径中没有空白符(空格以及其他一些不可见的空白符),否则maven会出问题。
2. 执行下面的命令生成项目。严格按照下面红色标注的答案回答系统的提问。
C:\>mvn org.andromda.maven.plugins:andromdapp-maven-plugin:3.3:generate
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'andromdapp'.
[INFO] ----------------------------------------------------------------------------
[INFO] Building Maven Default Project
[INFO] task-segment: [andromdapp:generate] (aggregator-style)
[INFO] ----------------------------------------------------------------------------
[INFO] [andromdapp:generate]
INFO [AndroMDA] discovered andromdapp type --> 'richclient'
INFO [AndroMDA] discovered andromdapp type --> 'j2ee'
Please choose the type of application to generate [richclient, j2ee]
j2ee
Please enter the location in which your new application will be created
(i.e. f:/java/development):
C:/(这里你可以输入你希望项目产生到的目录)
Please enter your first and last name (i.e. Chad Brandon):
Naresh Bhatia(输入你自己的名字)
Which kind of modeling tool will you use? [uml1.4, uml2, emf-uml2]:
Use the list below to enter the correct choice:
ArgoUML: uml1.4
MagicDraw 9.x: uml1.4
MagicDraw 15.5: uml2
RSM 6: emf-uml2
uml1.4
Please enter the name of your J2EE project (i.e. Animal Quiz):
TimeTracker
Please enter an id for your J2EE project (i.e. animalquiz):
timetracker
Please enter a version for your project (i.e. 1.0-SNAPSHOT):
1.0-SNAPSHOT
Please enter the root package name for your J2EE project
(i.e. org.andromda.samples.animalquiz):
org.andromda.timetracker
Would you like an EAR or standalone WAR? [ear, war]:
ear
Please enter the type of transactional/persistence cartridge to use
[hibernate, ejb, ejb3, spring, none]:
spring
Please enter the Spring version to use (enter '1' for 1.x or '2' for 2.x) [1, 2]:
2
Please enter the database backend for the persistence layer
[hypersonic, mysql, oracle, db2, informix, mssql, pointbase,
postgres, sybase, sabdb, progress, derby]:
mysql
Will your project need workflow engine capabilities?
(it uses jBPM and Hibernate3)? [yes, no]:
no
Will your project have a web user interface? [yes, no]:
yes
Would you like your web user interface to use JSF or Struts? [jsf, struts]:
struts
Would you like to be able to expose your services as web services? [yes, no]:
no
-------------------------------------------------------------------------------------
G e n e r a t i n g A n d r o M D A P o w e r e d A p p l i c a t i o n
-------------------------------------------------------------------------------------
Output: 'file:/C://timetracker/app/pom.xml'
Output: 'file:/C://timetracker/app/src/main/application/META-INF/jboss-app.xml'
Output: 'file:/C://timetracker/app/src/main/config/timetracker-ds.xml'
Output: 'file:/C://timetracker/common/pom.xml'
Output: 'file:/C://timetracker/core/target/classes/META-INF/ejb-jar.xml'
Output: 'file:/C://timetracker/core/pom.xml'
Output: 'file:/C://timetracker/mda/pom.xml'
Output: 'file:/C://timetracker/mda/src/main/config/andromda.xml'
Output: 'file:/C://timetracker/mda/src/main/config/mappings/WebMergeMappings.xml'
Output: 'file:/C://timetracker/mda/src/main/uml/timetracker.xmi'
Output: 'file:/C://timetracker/pom.xml'
Output: 'file:/C://timetracker/readme.txt'
Output: 'file:/C://timetracker/web/pom.xml'
Output: 'file:/C://timetracker/web/src/main/properties/messages.properties'
Output: 'file:/C://timetracker/web/target/timetracker-web-1.0-SNAPSHOT/WEB-INF/web.xml'
-------------------------------------------------------------------------------------
New application generated to --> 'file:/C://timetracker/'
Instructions for your new application --> 'file:/C://timetracker/readme.txt'
-------------------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3 minutes 45 seconds
[INFO] Finished at: Sat May 20 21:47:51 EDT 2006
[INFO] Final Memory: 9M/22M
[INFO] ------------------------------------------------------------------------
C:\>
运行完命令,到项目生成的目录,你可以看到多个AndroMDA创建的目录。你可能会注意到有些目录下面有名为pom.xml的文件。生成的项目文件夹结构如下:
timetracker
|
|-- mda
|
|-- common
|
|-- core
|
|-- web
|
+-- app
timetracker:系统的主控项目,控制系统的全部构建过程和通用构建属性设置。
Mda:mda项目是系统最重要的子项目。日志跟踪系统的UML模型就在src/main/uml下面,在这个项目下也可以配置系统需要的一些资源。
Common:common子项目中的资源和类都是其他子项目可以共享的。主要包含VO对象。
Core:core子项目下的资源和类都是和spring,hibernate,ejb相关的。包括实体类,数据访问对象,hibernate映射文件和服务类。
Web:web子项目下面资源和类都是表现层的组件。
App:app子项目下面的资源和类用于构建.ear包。
你想要更详细的了解相关信息,请参考timetracker目录下的readme.txt文件。这个文件也描述了项目相关的maven命令。事实上,开发员经常会参考这个文件中的maven命令。自己打开这个文件先熟悉一下吧。
调整配置
下面我们将对AndroMDA产生的项目的配置做小幅的调整以适应具体的项目构建;在调整这些配置的同时,我们会给你说明每一项配置调整的原因。
打开位于timetracker\mda\src\main\config\目录下的andromda.xml文件。做如下修改:
1. 搜索“enableSpringTransactionsWhenEjbsEnabled”属性,并将他的取值由“true”改为“false”。因为我们将使用EJB.我们不打算使用Spring来管理数据库事务。
2. 搜索“bpm4struts”名字空间。在bpm4struts名字空间中添加一个日期格式属性以改变默认的日期格式(默认的日期格式和原型中的日期格式不同)。该属性以及取值如下:<property name="defaultDateFormat">MM/dd/yyyy</property>
3. 在bpm4struts名字空间中添加另外一个属性,如下:<property name="normalizeMessages">true</property> 该属性允许产生最小数量的资源,当系统中有2个相同名字的元素时,只产生一个资源。该选项默认是关闭的,目的是为了和先前的版本兼容。
4. 保存并关闭andromda.xml文件。
打开位于项目根部目录timetracker下的pom.xml文件,做如下修改:
1. 查找下面的文本行,下面的文本行主要用于描述应用系统所使用的JDBC驱动:
<jdbc.driver.jar>${jboss.home}/server/default/lib/hsqldb.jar</jdbc.driver.jar>
因为我们使用的是MySQL,所以要将文本行的内容修改为如下所示(确保那你所指定的驱动的版本号准确无误):
<jdbc.driver.jar>${jboss.home}/server/default/lib/mysql-connector-java-5.0.4.jar</jdbc.driver.jar>
2. 查找如下2行文本行,这两行分别指定系统所使用的数据库的用户名和密码:
<jdbc.username>sa</jdbc.username>
<jdbc.password></jdbc.password>
将数据库用户名和密码修改为我们先前创建的数据库用户和密码:
<jdbc.username>timetracker</jdbc.username>
<jdbc.password>timetracker</jdbc.password>
3. 查找<repositories>文本片段。在这里你会找到一个AndroMDA所使用的仓库定义。添加一个Java.net的仓库定义。Java.net仓库定义被用于下载Sun公司提供的jar文件(比如jta.jar等)。添加Java.net库定义后的<repositories>文本片段如下:
<repositories>
<repository>
<id>andromda</id>
<name>AndroMDA Repository</name>
<url>http://team.andromda.org/maven2</url>
</repository>
<repository>
<id>maven2-repository.dev.java.net</id>
<name>Java.net Repository for Maven 2</name>
<url>https://maven2-repository.dev.java.net/nonav/repository</url>
<layout>default</layout>
</repository>
</repositories>
保存并关闭pom.xml文件。
打开位于mda子项目目录timetracker\mda下的pom.xml文件,做如下调整:
1. 查找名为“hibernate.db.showSql”的属性,并将其取值由“true”改为“false”。这将使冗长的Hibernate SQL语句信息不再输出到JBoss控制台。我们希望Hibernate SQL语句信息输出到JBoss日志文件中,这里是这些信息输出的最佳位置。
2. 保存并关闭pom.xml文件。
打开位于app子项目目录timetracker\app\下的pom.xml文件。做如下修改:
1. 查找如下文本行,该文本行用于描述maven ear插件的版本号:
<artifactId>maven-ear-plugin</artifactId>
<version>2.1</version>
为了兼容最新版本的JBoss应用服务器,需要将maven ear 插件的版本改为2.3:
<artifactId>maven-ear-plugin</artifactId>
<version>2.3</version>
2. 保存并关闭pom.xml.
现在我们已经创建了项目,是时候开始我们的建模工作了。下面的章节我们讲解怎样建模。
分享到:
相关推荐
AndroMDA(Android Model Driven Architecture)是一个开源的模型驱动架构工具,专门针对Android应用程序开发。它基于MDD(Model Driven Development)理念,旨在提高开发效率,降低复杂性,通过模型转换将业务逻辑...
官方版本,亲测可用
官方版本,亲测可用
MDA(Model Driven Architecture,模型驱动架构)是由OMG(Object Management Group,对象管理组织)提出的一种软件开发方法论,旨在通过模型的抽象和转换,提高软件开发的效率和质量。它强调将业务逻辑与技术实现...
AndroMDA(Andro Model Driven Architecture)是一款强大的模型驱动架构工具,它主要用于简化Java应用程序的开发,尤其是Android应用的构建。AndroMDA基于MDE(Model Driven Engineering)理念,允许开发者通过高层次...
AndroMDA是遵循模型驱动架构(MDA)范式的代码生成框架。 它从UML工具获取UML模型,并生成特定于您的应用程序体系结构的类和可部署组件(J2EE或其他)。 可通过Maven Central(发行版)和Sonatype(快照)获得工件。
官方版本,亲测可用
首先,Andromda是一个强大的模型驱动架构(MDA)工具,它基于UML(统一建模语言)模型来生成Java代码,帮助企业快速开发复杂的应用系统。Andromda通过将业务逻辑与呈现层分离,允许开发者专注于业务规则,而无需过多...
本文将基于TU Wien Business Informatics Group提供的资料,深入探讨MDA的基本概念、目标以及其在全自动代码生成方面的应用案例——AndroMDA。 #### 二、MDA概述 MDA是由Object Management Group (OMG)于2003年提出...
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用