`

用appfuse2.0生成一个单独的模块

 
阅读更多
原文:http://www.blogjava.net/liuwentao253/archive/2007/08/30/141406.html
从appfuse开始学习Spring和Hibernate - (1)构建项目 http://jackycheng2007.iteye.com/blog/1512766
关于maven appfuse2 的心得体会 http://blog.csdn.net/chenhuaishi/article/details/4873442
appfuse2 根据表生成自己想生成的pojo http://luohua.iteye.com/blog/443903

mvn appfuse:gen-model是appfuse maven plugin(简称AMP,大家记住这个简称)中的
一个命令,用以从数据库反向工程生成pojo。我们可以在eclipse环境中配置这个插
件,具体配置方法类似于配置mvn jetty:run,在此不再赘述。配置好了这个插件之
后,我们还有如下几步要做才能保证该插件能正确运行:
1. 修改pom.xml中<artifactId>appfuse-maven-plugin</artifactId>下面的相关配
置,在<configuration>下加入如下语句:
<componentProperties>
    <revengfile>target/classes/hibernate.reveng.xml</revengfile>
</componentProperties>

hibernate.reveng.xml是用以定制反向工程的配置文件,基本配置appfuse已经帮我们
做好了,没有大的问题,不过大家可以根据自己的需求去修改,也可以更改到另外一
个路径
2.我们的物理表中往往存在外键关联关系,这时用这个插件反向工程的时候会报错,
我们需要按如下步骤进行修改:
a.首先cmd进入自己的项目目录
b.运行命令:mvn appfuse:copy-template
c.找到src/test/resources/appfuse/model路径下的
Ejb3PropertyGetAnnotation.ftl文件,找到
<#lt/>${pojo.generateJoinColumnsAnnotation(property)},将此句改为
<#lt/>${pojo.generateJoinColumnsAnnotation(property,cfg)}即可
---------------------------下面的修改比较完整一点
<#if ejb3><#rt/>
    <#if pojo.hasIdentifierProperty()><#rt/>
        <#if property.equals(clazz.identifierProperty)><#rt/>
        <#lt/>${pojo.generateAnnIdGenerator()}
${pojo.generateAnnColumnAnnotation(property)}
    @GeneratedValue(strategy = GenerationType.AUTO)
    @DocumentId<#rt/>
        </#if><#rt/>
    </#if><#rt/>
    <#if c2h.isManyToOne(property)><#rt/>
        <#--TODO support @OneToOne true and false-->
        <#lt/>${pojo.generateManyToOneAnnotation(property)}
    // TODO : 这里要修改,否则出错。1.导入JoinColumn注解类。2.修改JoinColumn的ID名称。
    @JoinColumn(name = "xxxxxx_id")
        <#--TODO support optional and targetEntity-->
        <#lt/>${pojo.generateCollectionAnnotation(property, cfg)}
        <#elseif c2h.isCollection(property)><#rt/>
            <#lt/>${pojo.generateCollectionAnnotation(property, cfg)}
        <#else><#rt/>
        <#lt/>${pojo.generateBasicAnnotation(property)}
        <#if !property.equals(clazz.identifierProperty)><#rt/>
        <#lt/>${pojo.generateAnnColumnAnnotation(property)}
        <#lt/>    @Field
        </#if><#rt/>
    </#if><#rt/>
</#if><#rt/>






原文
----------------------------------
使用 AppFuse2.0,你需要对 maven有一些基本的了解,比如什么叫 target、什么是 pom.xml 以及如何运行 maven,等等。下表列出了本文中用到的也是较为常用的 AppFuse 的 命令:
命令                                                                 说明

mvn eclipse:eclipse                      生成eclipse的项目的配置文件,用户可以直接把项目导入到eclipse中

mvn jetty:run-war                         打包并且发布你的应用程序到Jetty, 查看在 http://localhost:8080 

mvn appfuse:gen                         根据pojo生成dao manger action 页面及他们的test。

mvn appfuse:install                       把生成的源代码及配置文件写入到src中

mvn integration-test                      Runs UI tests in Tomcat using Cargo

mvn appfuse:full-source               Converts AppFuse basic projects to full-source with no AppFuse dependencies. Currently does not work with modular archetypes.

mvn appfuse:gen-model           Generates Java classes from database tables.


本文的示例实现对部门信息的增删查改等基本功能。用 struts 实现表示层,用 Hibernate 开发持久层,用 Spring 提供事务控制等跨模块服务,并用 Acegi 进行安全管理。本示例只用到一个域模型:department,下面是它的 UML 图。
图 1. Department UML 图



现在我们来生成一个简单的模块
首先,还是进入dos命令行
在进入myproject里,执行mvn eclipse:eclipse
这是可以在eclipse中import导入appfuse的项目—myproject
在src.main.java.org.appfuse.model中新建一个deparment类
Department.java
package org.appfuse.model; 

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table; 

@Entity
@Table(name="department")
public class Department extends BaseObject implements Serializable {
       private static final long serialVersionUID = 831759222476769186L;
       private Long id;
       private String name;     
       private String description;      

       @Id @GeneratedValue(strategy=GenerationType.AUTO)
       public Long getId() {
              return id;
       } 

       public void setId(Long id) {
              this.id = id;
       }

       @Column(name="name",nullable=false,length=100)
       public String getName() {
              return name;
       } 

       public void setName(String name) {
              this.name = name;
       }       

       @Column(name="description",nullable=false,length=100)
       public String getDescription() {
              return description;
       } 

       public void setDescription(String description) {
              this.description = description;
       } 

       @Override
       public boolean equals(Object o) {
              // TODO Auto-generated method stub
              return false;
       }

       @Override
       public int hashCode() {
              // TODO Auto-generated method stub
              return 0;
       }

       @Override
       public String toString() {
              // TODO Auto-generated method stub
              return null;
       }
}


我们现在用appfuse提供的appfuse:gen来生成模块

AppFuse 制作了一个代码生成工具 ,他生成的代码位于 \target\appfuse\ 目录下面generated-sources内。代码生成工具可以生成绝大部分我们需要的代码,比如 dao 类,service 类,菜单、增删改的 web 页面、配置文件、样本数据,等等。

如果你希望appfuses生成 dao 和 service 类,就在项目根目录下的pom.xml中,把genericCore属性设为false。

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>appfuse-maven-plugin</artifactId>
                <version>${appfuse.version}</version>
                <configuration>
                    <genericCore>${amp.genericCore}</genericCore>
                    <fullSource>${amp.fullSource}</fullSource>
                </configuration>
            </plugin>

Set to false if you want Java files generated for your DAOs and Managers

Set to true if you've "full-sourced" your project and changed org.appfuse to your package name

它可以帮你搞定一切。下面就让我们来运行 “mvn appfuse:gen” 生成代码。


在target\appfuse\generated-sources下会生成部门的代码

我们需要接着执行mvn appfuse:install 把生成的代码写入源程序中

接着执行mvn jetty:run-war,在 http://localhost:8080就可以看到程序了

appfuse的初始界面
分享到:
评论

相关推荐

    APPFUSE2.0中加入FCKeditor

    接着,FCKeditor的集成意味着开发者希望在APPFUSE 2.0的应用中提供一个用户友好的内容编辑界面。FCKeditor通常用于后台管理系统,如内容管理系统(CMS)或论坛,它提供了丰富的文本格式化选项,如字体选择、大小调整...

    AppFuse 2.0 RC1 Documentation

    综上所述,AppFuse 2.0 RC1文档是一个全面的资源集合,不仅提供了AppFuse的基础使用教程,还深入探讨了高级主题,如安全性、持续集成和多框架集成,是Web开发人员学习和掌握AppFuse不可或缺的指南。

    appfuse 2.0 教程

    - **代码生成器**:AppFuse 提供了一个强大的代码生成工具,可以根据预定义的模板快速生成基本的 Java 类和配置文件。 - **定制化**:用户可以根据项目需求自定义模板,实现更灵活的代码生成。 - **集成**:代码...

    appfuse2.0种mysql 数据库

    使用appfuse2 的时候,需要连接mysql数据,数据库建表的sql语言。

    Appfuse 2.doc

    2. **创建项目文件夹**:在磁盘上创建一个文件夹,用于存放Appfuse项目,例如`D:\appfuse2-hzy`。 3. **执行Maven命令**:在命令行中输入以下命令: ``` mvn archetype:create -DarchetypeGroupId=org.appfuse -...

    appfuse

    描述中提到的是使用AppFuse 2.0版本的情况,这可能是指一个基于早期MVC架构的示例项目。在AppFuse 2.0时代,它主要支持Struts或 Tapestry 框架,而非现代的Spring Boot。由于描述中提到“没有jar包”,这可能意味着...

    APPFUSE工具研究.doc

    AppFuse 是一个基于Java平台的开源项目,旨在加速和简化Web应用程序的开发。它通过集成各种流行框架,如Struts、Spring、Hibernate等,提供了一个项目骨架,使得开发者能够快速搭建新项目的结构。AppFuse分为1.x和...

    appfuse 学习笔记

    Appfuse 是一个开源框架,旨在帮助开发者高效地构建企业级应用。通过提供一套完善的架构模板、最佳实践和技术栈组合,使得开发者能够专注于业务逻辑的实现,而不是基础架构的搭建。这不仅大大提升了开发效率,还保证...

    appfuse学习笔记(二)新建模块

    这可以通过运行`appfuse generate-module`命令完成,该命令会根据选定的技术栈(如Spring或Struts)生成一个基本的Maven项目结构。 2. **选择技术栈**:AppFuse支持多种技术栈,如Spring、Struts、JSF等。在创建...

    AppFuse学习笔记(J2EE入门级框架)

    AppFuse 是一个由 Matt Raible 创建的开源项目,它为初学者提供了一个基础的 J2EE 框架,用于演示如何集成多个流行的技术,如 Spring、Hibernate、iBatis、Struts、xDcolet、JUnit、Taperstry 和 JSF 等。...

    maven导入appfuse架构生成代码

    由于appfuse主页的mvn自动生成项目架构代码无法显示,个中原因,你懂的~被墙了。所以在此制作了自动生成代码包,进入之后点击页面可以出现生成代码。

    appfuse学习笔记(一)安装部署

    使用 Maven 的 archetype:generate 命令创建一个新的 AppFuse 项目。在命令行中输入以下命令: ``` mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeGroupId=org.appfuse -...

    玩转appfuse--使用appfuse建设MVC网站

    AppFuse是一个开源项目,它提供了一个快速启动MVC(Model-View-Controller)Web应用程序开发的框架。基于Java,AppFuse集成了Spring、Struts2、Hibernate等流行的技术,极大地简化了开发流程,使开发者能够更专注于...

    AppFuse

    AppFuse是一个用于启动J2EE项目的工具包,它提供了一种快速而简便的方法来构建基于Java的应用程序。该工具包由Matt Raible创建,他在网络开发领域拥有丰富的经验,并且是多个开源项目的贡献者,包括Roller Weblogger...

Global site tag (gtag.js) - Google Analytics