`
jiasudu1649
  • 浏览: 719520 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

阅读更多

<o:p> </o:p>

使用 AppFuse2.0,你需要对 maven有一些基本的了解,比如什么叫 target、什么是 pom.xml 以及如何运行 maven,等等。如果你现在还不知道 maven是什么,就需要找些相关资料学习一下。下表列出了本文中用到的也是较为常用的 AppFuse 的 命令:<o:p></o:p>

命令 <o:p></o:p>

说明<o:p></o:p>

mvn eclipse:eclipse<o:p></o:p>

生成eclipse的项目的配置文件,用户可以直接把项目导入到eclipse<o:p></o:p>

mvn jetty:run-war<o:p></o:p>

打包并且发布你的应用程序到Jetty, 查看在 http://localhost:8080<o:p></o:p>

<o:p> </o:p>

<o:p> </o:p>

<o:p> </o:p>

<o:p> </o:p>

 mvn appfuse:gen<o:p></o:p>

根据pojo生成dao manger action 页面及他们的test<o:p></o:p>

mvn appfuse:install<o:p></o:p>

把生成的源代码及配置文件写入到src<o:p></o:p>

mvn integration-test<o:p></o:p>

Runs UI tests in Tomcat using Cargo<o:p></o:p>

<o:p> </o:p>mvn <o:p>appfuse:full-source</o:p>

<o:p> </o:p>Converts AppFuse basic projects to full-source with no AppFuse dependencies. Currently does not work with modular archetypes.

<o:p> mvn appfuse:gen-model
</o:p>

<o:p> </o:p>Generates Java classes from database tables.

<o:p> </o:p>


<o:p></o:p>

<o:p> </o:p>

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

1. Department UML

Appfuse 2.0简单开始和源码的下载中,我简单说明了appfuse2.0的生成<o:p></o:p>

现在我们来生成一个简单的模块  <o:p></o:p>

首先,还是进入dos命令行<o:p></o:p>

在进入myproject里,执行mvn eclipse:eclipse<o:p></o:p>

这是可以在eclipseimport导入appfuse的项目myproject

src.main.java.org.appfuse.model中新建一个deparment

java 代码
 
  1. Department.java  
  2.   
  3. package org.appfuse.model;  
  4. import java.io.Serializable;  
  5. import javax.persistence.Column;  
  6.   
  7. import javax.persistence.Entity;  
  8.   
  9. import javax.persistence.GeneratedValue;  
  10.   
  11. import javax.persistence.GenerationType;  
  12.   
  13. import javax.persistence.Id;  
  14.   
  15. import javax.persistence.Table;  
  16.   
  17. @Entity  
  18.   
  19. @Table(name="department")  
  20.   
  21. public class Department extends BaseObject implements Serializable {  
  22.   
  23.    
  24.   
  25.        /** 
  26.  
  27.         * 
  28.  
  29.         */  
  30.   
  31.        private static final long serialVersionUID = 831759222476769186L;  
  32.  
  33.        private Long id; 

  34.        private String name;  
  35.   
  36.        private String description;       
  37.   
  38.        @Id @GeneratedValue(strategy=GenerationType.AUTO)  
  39.   
  40.        public Long getId() {  
  41.   
  42.               return id;  
  43.        } 

  44.        public void setId(Long id) {  
  45.               this.id = id;  
  46.        }  
  47.   
  48.        @Column(name="name",nullable=false,length=100)  
  49.        public String getName() {  
  50.               return name;  
  51.        }  
  52.   
  53.        public void setName(String name) {  
  54.               this.name = name;  
  55.        }  
  56.   
  57.        @Column(name="description",nullable=false,length=100)   
  58.        public String getDescription() {
  59.               return description;  
  60.        }  
  61.   
  62.        public void setDescription(String description) {  
  63.               this.description = description;  
  64.        }  
  65.   
  66.        @Override  
  67.        public boolean equals(Object o) {  
  68.               // TODO Auto-generated method stub   
  69.         return false;  
  70.   
  71.        }  
  72.   
  73.        @Override  
  74.        public int hashCode() {  
  75.               // TODO Auto-generated method stub  
  76.               return 0;  
  77.        }  
  78.   
  79.        @Override  
  80.        public String toString() {  
  81.               // TODO Auto-generated method stub  
  82.               return null;  
  83.        }  
  84. }  

<o:p></o:p>

我们现在用appfuse提供的appfuse:gen来生成模块<o:p></o:p>

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

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

xml 代码
 
  1. <project>  
  2. ...  
  3.   <build>  
  4.     <plugins>  
  5.       <plugin>  
  6.         <groupId>org.codehaus.mojo</groupId>  
  7.         <artifactId>appfuse-maven-plugin</artifactId>  
  8.         <version>2.0</version>  
  9.         <configuration>  
  10.           <genericCore>true</genericCore> <!-- Set to false if you want Java files generated for your DAOs and Managers -->  
  11.           <fullSource>false</fullSource> <!-- Set to true if you've "full-sourced" your project and changed org.appfuse to your package name -->  
  12.         </configuration>  
  13.         <dependencies>  
  14.           <dependency>  
  15.             <groupId>${jdbc.groupId}</groupId>  
  16.             <artifactId>${jdbc.artifactId}</artifactId>  
  17.             <version>${jdbc.version}</version>  
  18.           </dependency>  
  19.         </dependencies>  
  20.       </plugin>  
  21.     </plugins>  
  22.   </build>  
  23. ...  
  24. </project>  

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

<o:p> </o:p>

 [input] What is the name of you like to generate code from  POJO (i.e. person)?<o:p></o:p>

Department<o:p></o:p>

<o:p> </o:p>

target\appfuse\generated-sources下会生成部门的代码<o:p></o:p>

我们需要接着执行mvn appfuse:install<o:p></o:p>

把生成的代码写入源程序中<o:p></o:p>

<o:p> </o:p>

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

<o:p> </o:p>

appfuse的初始界面<o:p> </o:p>

  • 描述: 图 1. Department UML 图
  • 大小: 35.5 KB
  • 大小: 59.1 KB
  • 描述: appfuse的初始界面
  • 大小: 50.7 KB
分享到:
评论
11 楼 zhang20084 2008-08-12  
appfuse做的最新项目 www.puorg.com到群网
10 楼 zhang20084 2008-08-12  
appfuse做的最新项目 www.puorg.com到群网
9 楼 leonhe_cn 2008-06-12  
谢谢了,appfuse2我很看好就是资料太少了,请多写一些吧
8 楼 jiasudu1649 2008-01-23  
你的这些错误好像是appfuse2.0.1自身带的bug
你换个版本就好了
7 楼 volking 2008-01-17  
请问我的错在哪?

H:\struts2-crud>mvn appfuse:gen
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'appfuse'.
[INFO] ------------------------------------------------------------------------
[INFO] Building AppFuse Struts 2 Application
[INFO]    task-segment: [appfuse:gen]
[INFO] ------------------------------------------------------------------------
[INFO] Preparing appfuse:gen
[INFO] [warpath:add-classes {execution: default}]
[INFO] [aspectj:compile {execution: default}]
[INFO] [native2ascii:native2ascii {execution: native2ascii-utf8}]
[INFO] [native2ascii:native2ascii {execution: native2ascii-8859_1}]
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:compile]
[INFO] Nothing to compile - all classes are up to date
[INFO] [appfuse:gen]
What is the name of your pojo (i.e. Person)?: Person
log4j:WARN Continuable parsing error 53 and column 64
log4j:WARN Attribute value "com.opensymphony.xwork2.util.OgnlValueStack" of type ID must b
e unique within the document.
[INFO] Configuration XML file loaded: H:\struts2-crud\src\main\resources\hibernate.cfg.xml

[INFO] Configuration XML file loaded: H:\struts2-crud\src\main\resources\hibernate.cfg.xml

[INFO] src/main/resources/database.properties not found within the project. Trying absolut
e path.
[INFO] No hibernate properties file loaded.
[info] [AppFuse] Installing generated files (pattern: **/*.java)...
[INFO] ------------------------------------------------------------------------
[ERROR] FATAL ERROR
[INFO] ------------------------------------------------------------------------
[INFO] H:\struts2-crud\target\appfuse\generated-sources not found.
[INFO] ------------------------------------------------------------------------
[INFO] Trace
H:\struts2-crud\target\appfuse\generated-sources not found.
        at org.apache.tools.ant.types.AbstractFileSet.getDirectoryScanner(AbstractFileSet.
java:422)
        at org.apache.tools.ant.taskdefs.Copy.execute(Copy.java:453)
        at org.appfuse.tool.ArtifactInstaller.copyGeneratedObjects(ArtifactInstaller.java:
116)
        at org.appfuse.tool.ArtifactInstaller.execute(ArtifactInstaller.java:44)
        at org.appfuse.mojo.exporter.AppFuseGeneratorMojo.doExecute(AppFuseGeneratorMojo.j
ava:250)
        at org.appfuse.mojo.HibernateExporterMojo.execute(HibernateExporterMojo.java:138)
        at org.appfuse.mojo.exporter.AppFuseGeneratorMojo.execute(AppFuseGeneratorMojo.jav
a:194)
        at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.j
ava:447)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecyc
leExecutor.java:539)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(Defau
ltLifecycleExecutor.java:493)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycl
eExecutor.java:463)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailure
s(DefaultLifecycleExecutor.java:311)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(Default
LifecycleExecutor.java:278)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExe
cutor.java:143)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:333)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:126)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:282)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.ja
va:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
        at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
        at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
        at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 16 seconds
[INFO] Finished at: Thu Jan 17 17:19:01 GMT+08:00 2008
[INFO] Final Memory: 16M/29M
[INFO] ------------------------------------------------------------------------
6 楼 volking 2008-01-17  
H:\struts2-crud>mvn appfuse:gen
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'appfuse'.
[INFO] ------------------------------------------------------------------------
[INFO] Building AppFuse Struts 2 Application
[INFO]    task-segment: [appfuse:gen]
[INFO] ------------------------------------------------------------------------
[INFO] Preparing appfuse:gen
[INFO] [warpath:add-classes {execution: default}]
[INFO] [aspectj:compile {execution: default}]
[INFO] [native2ascii:native2ascii {execution: native2ascii-utf8}]
[INFO] [native2ascii:native2ascii {execution: native2ascii-8859_1}]
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:compile]
[INFO] Nothing to compile - all classes are up to date
[INFO] [appfuse:gen]
What is the name of your pojo (i.e. Person)?: Person
log4j:WARN Continuable parsing error 53 and column 64
log4j:WARN Attribute value "com.opensymphony.xwork2.util.OgnlValueStack" of typ
ID must be unique within the document.
[INFO] Configuration XML file loaded: H:\struts2-crud\src\main\resources\hibern
te.cfg.xml
[INFO] Configuration XML file loaded: H:\struts2-crud\src\main\resources\hibern
te.cfg.xml
[INFO] src/main/resources/database.properties not found within the project. Try
ng absolute path.
[INFO] No hibernate properties file loaded.
[info] [AppFuse] Installing generated files (pattern: **/*.java)...
[INFO] ------------------------------------------------------------------------
[ERROR] FATAL ERROR
[INFO] ------------------------------------------------------------------------
[INFO] H:\struts2-crud\target\appfuse\generated-sources not found.
[INFO] ------------------------------------------------------------------------
[INFO] Trace
H:\struts2-crud\target\appfuse\generated-sources not found.
        at org.apache.tools.ant.types.AbstractFileSet.getDirectoryScanner(Abstr
ctFileSet.java:422)
        at org.apache.tools.ant.taskdefs.Copy.execute(Copy.java:453)
        at org.appfuse.tool.ArtifactInstaller.copyGeneratedObjects(ArtifactInst
ller.java:116)
        at org.appfuse.tool.ArtifactInstaller.execute(ArtifactInstaller.java:44

        at org.appfuse.mojo.exporter.AppFuseGeneratorMojo.doExecute(AppFuseGene
atorMojo.java:250)
        at org.appfuse.mojo.HibernateExporterMojo.execute(HibernateExporterMojo
java:138)
        at org.appfuse.mojo.exporter.AppFuseGeneratorMojo.execute(AppFuseGenera
orMojo.java:194)
        at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPlug
nManager.java:447)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Def
ultLifecycleExecutor.java:539)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandalon
Goal(DefaultLifecycleExecutor.java:493)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(Defa
ltLifecycleExecutor.java:463)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHa
dleFailures(DefaultLifecycleExecutor.java:311)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegme
ts(DefaultLifecycleExecutor.java:278)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultL
fecycleExecutor.java:143)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:333)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:126)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:282)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcce
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
        at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
        at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430

        at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 minute 25 seconds
[INFO] Finished at: Thu Jan 17 17:16:51 GMT+08:00 2008
[INFO] Final Memory: 16M/29M
[INFO] ------------------------------------------------------------------------
5 楼 shilimin 2007-08-16  
您有使用Appfuse2搭好的架子吗,可以自动生成代码,包括DAO、SERVICE、WEB层的代码。急死我了,

shilimin@cattsoft.com
QQ:45532508
4 楼 ff_ff 2007-08-09  
好,收藏一下
3 楼 ff_ff 2007-08-09  
老大,写得不错。
2 楼 furonglang 2007-08-01  
老大 厉害哈 又学到几个新命令了 嘿嘿 
唉 如果能知道怎么快点调试就好了 现在是改一个字母 也得关jetty 再重新mvn jetty:run-war 郁闷
1 楼 fisher_y 2007-07-11  
希望多写些appfuse 2.0的东西,关注中。。。。

相关推荐

    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新手上路

    - 在任意位置创建一个目录,如`C:\appfuse`,用于存放所有AppFuse项目。 **3. 构建项目骨架** - 使用命令行进入项目目录。 - 执行`mvn archetype:create`命令,选择不同的架构模板,这里以Struts2 Basic为例。 ...

    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