AppFuse 2.1刚刚于2011年4月4日发布。2.1比2.1.0.M2最大的好处是支持jetty:run快速部署,便于你在开发时进行测试(详见下文)。另外,也修正了许多bugs.
对于想要用好SSH (Struts2, Spring, Hibernate)的朋友来说,AppFuse是不可多得的宝贵范例。
我最近正在研究SSH,并且想用学到的SSH技术,开发一个论坛项目。
我发现,学好SSH和用好SSH真是两件完全不同的事情。“学好”是针对基本概念,而“用好”是针对最佳实践。
我在SSH的基本概念学了一阵后,到要动手写代码了,却发现无从下手。因为SSH是3个既相对独立,又相互关联的框架。要想把SSH这3个框架整合到1个项目中,并且要用一些最佳实践整合好,并不是一件容易的事情。
AppFuse正好做了整合SSH的事情,从2007年7月11日推出AppFuse 2.0 RC1,到现在的2.1.0.M2,不仅整合好了SSH,还整合了Maven, Spring Annotations, JSF, Spring MVC, Stripe, Tapestry 5, Wicket, JDK5, Annotations, JSP 2.0, Servlet 2.4, JPA. 
这两天把最新版的AppFuse 2.1范例下载下来,编译打包运行,这期间遇到了不少问题,不过还好,基本上都被我给解决了。同时给AppFuse的作者Matt开出了两个JIRA Issues.
http://issues.appfuse.org/browse/APF-1249  : i18n - displaytag_zh*.properties and errors_zh*.properties converted but input files included in WAR instead of output files
http://issues.appfuse.org/browse/APF-1250  : i18n - displaytag_zh*.properties and errors_zh*.properties not converted by native2ascii in pom.xml
这篇博文主要是把AppFuse 2.1的安装运行步骤总结一下,以后会继续把AppFuse的使用经验和大家分享。
1. 运行环境
安装好以下环境(我用的是Windows 7 Home Basic):
Java SE 1.6.0_23
MySQL Server 5.1
Maven 2.2.1 (有些情况下AppFuse的操作在用Maven 3.0.3时会报错)
Tomcat 7.0.2
Eclipse 3.6.1 SR2
m2eclipse
2. AppFuse Quickstart
打开AppFuse Quickstart页面备查: http://appfuse.org/display/APF/AppFuse+QuickStart
3. 生成basic范例
在一个空文件夹下,从命令行提示窗口,运行Quickstart中下面的范例生成命令
mvn archetype:generate -B -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-struts-archetype -DarchetypeVersion=2.1.0 -DgroupId=com.mycompany -DartifactId=myproject -DarchetypeRepository=http://oss.sonatype.org/content/repositories/appfuse
上述命令运行成功后,会在当前文件夹下,生成一个myproject目录。进入目录,会看到范例源代码。
4. 获取全部源代码
在有pom.xml的目录下,运行下面的命令,获取全部AppFuse的源代码:
mvn appfuse:full-source
5. MySQL的root的password
在pom.xml文件结尾处,找到MySQL的root的password的元素,写上你的root的口令。pom.xml默认root的口令是空。
6. 编译运行
在myproject目录下,在命令行提示窗口,运行下面的命令让AppFuse运行在Jetty服务器上。
mvn jetty:run
AppFuse 2.1最大的改进之一,就是使用了mvn jetty:run来快速部署测试你的应用程序。maven-jetty-plugin能根据pom.xml的描述,在不打WAR包的情况下,自动找到相关的文件来部署运行Web 应用程序进行开发测试,能为你省去了大量打WAR包,然后再部署到Tomcat上测试的时间。另外maven-jetty-plugin也能扫描你的源代码,一旦发现有源文件更新,它会自动重新部署Web应用。
等提示jetty启动完毕后,在浏览器中输入 http://localhost:8080/ 来访问AppFuse. Login界面的用户名和口令都是admin,登录进入AppFuse范例系统。
你也可以运行下面命令在生成WAR包,部署到Tomcat上:
mvn clean package
7. 开发
AppFuse 2.1不建议使用mvn eclipse:eclipse来生成eclipse项目文件,因为eclipse plugin的bug太多了。Matt建议直接在eclipse里使用m2eclipse,来打开AppFuse进行开发。
我在Eclipse里用m2eclipse进行Maven的操作很顺利。同时发现,若在MyEclipse (我用的是MyEclipse for Spring 8.6.0),取消Maven4MyEclipse功能,直接用m2eclipse也同样很顺利。

接下来,你就可以用Eclipse看AppFuse的代码,在Eclipse里用m2eclipse发mvn jetty:run命令打包运行,再对照着读AppFuse 的Tutorials (http://appfuse.org/display/APF/Tutorials)了。

==================================================================

利用Maven构建appfuse。

步骤如下:

1)Maven下载下载apache-maven-2.2.1-bin.zip 下载地址:http://apache.freelamp.com/maven/binaries/apache-maven-2.2.1-bin.zip

2)下载appfuse支持包。下载地址: -2.0.2.zip(开发中需要的各个版本的jar包)

3)Maven环境搭建

1.解压缩apache-maven-2.2.1-bin.zip到你想安装的位置,如E:javaapache-maven-2.2.1。

2.设置Maven系统环境变量:PATH中添加E:javaapache-maven-2.2.1bin。

3.确认Maven的安装,在命令行输入mvn - version提示Apache Maven 2.2.1即安装成功;

4)将下载下来的appfuse支持包解压。如:E:javam2repository

5)修改E:javaapache-maven-2.2.1confsettings.xml

如下:

<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ~/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>E:/java/m2/repository</localRepository>

6)新建项目:cmd 进入E:workspace>

mvn archetype:generate -B -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse- basic-struts -DarchetypeVersion=2.0.2 -DgroupId=com.appsafe -DartifactId=publicCenter

(注: 可以到http://appfuse.org/display/APF/AppFuse+QuickStart+-+Chinese 选择你所需要的套件,此处以Struts2为

例).出现BUILD SUCCESS为成功

7)获取appfuse源码:

先进入项目E:workspacepublicCenter> 再运行mvn appfuse:full-source

8)修改项目的pom.xml中的 <jdbc.username> 和 <jdbc.password> 为你数据库的用户名和密码

9)生成eclipse项目 :mvn eclipse:eclipse

加入支持库:Window -> Preferences -> Java -> Build Path -> Classpath Variables -> New,Name输入M2_REPO,Path输入E:javam2repository

10)试运行:mvn jetty:run

11)自动生成代码:此处需要下载模板。mvn appfuse:copy-templates此时会在src/test/resources/appfuse下面多出很多.ftl的文件。这就是模板文件。可以自定义修改。

12)创建表结构:

CREATE TABLE `Employee` (
`id` bigint(20) NOT NULL auto_increment
`code` varchar(10) NOT NULL
`dept` varchar(50) NOT NULL
`name` varchar(20) NOT NULL
`status` varchar(10) NOT NULL
`telephone` varchar(20) default NULL
`title` varchar(50) NOT NULL
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

13)通过表来生成pojo:mvn appfuse:gen-model

删除@GeneratedValue(strategy=IDENTITY)就不报错了

14)修改pom.xml用于指示是否生成daomanager........<genericCore>false</genericCore>为false生成daomanager.........反之不生成。当改变了项目路径即不为org.appfuse时<fullSource>true</fullSource>.

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

15)自动生成代码:mvn appfuse:gen -Dentity=Employee

16) mvn appfuse:install -Dentity=Employee 把生成的源代码及配置文件写入到targetclasses

17)启动项目发现乱码问题:修改displaytag_zh_CN.properties其编码规则为utf-8

18)用tomcat启动时其实只需要:如建了一个项目包e:/publicWebapp只需要拷贝一下文件进入

【1】E:workspacepublicCentersrcmainwebapp

【2】E:workspacepublicCentertargetclasses

【3】新建lib放入E:workspacepublicWebAppWEB-INF

【5】使用命令: mvn dependency:copy-dependencies下载支持包。拷贝E:workspacepublicCentertargetdependency下的包至lib。

19)直接把依赖包拷贝到LIB下面然后启动项目。这时会报一个displaytag错误。其实是tomcat里的jsp.jar和appfuse依赖包里的jsp2.0-api.jar有重叠。删去依赖包中的jsp2.0-api.jar在启动就不报错了。

20)

下面就是一些goal命令了,这里和Maven1有不少不同,常用的命令有:

创建Maven的普通java项目:mvn archetype:create -DgroupId=com.codeline.commons -DartifactId=pjoName

创建Maven的Web项目:mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-webapp
-DarchetypeArtifactId=maven-archetype-webapp
编译源代码:mvn compile (或者:mvn compiler:compile)
编译测试代码:mvn test-compile

运行测试:mvn test

产生site:mvn site
打包:mvn package
在本地Repository中安装jar:mvn install
清除产生的项目:mvn clean
生成eclipse项目:mvn eclipse:eclipse
生成idea项目:mvn idea:idea
组合使用goal命令,如只打包不测试:mvn -Dtest package
编译测试的内容:mvn test-compile
只打jar包:mvn jar:jar
只测试而不编译,也不测试编译:mvn test -skipping compile -skipping test-compile (这里要特别注意 -

skipping 的灵活运用,当然也可以用于其他组合命令)
清除eclipse的一些系统设置:mvn eclipse:clean

根据pojo生成相关代码文件 :mvn appfuse:gen

(转自tof.j) * 如何安装Jar(或war)依赖到本地的数据仓库中?
下面具一个如何把dwr.jar包上传到本地数据仓库的例子,一看例子,大家就明了了。
- 下载dwr.jar包到本地,我把它放到了 C:/ (C盘根目录),

- 进入“命令行提示符”,进入到C:/,然后执行 mvn install:install-file -Dfile=dwr.jar -DgroupId=dwr.mocha -DartifactId=dwrDart -Dversion=1.0 -Dpackaging=jar 这样就把dwr传到了本地仓库中(我的本地仓库地址为:E:appm2repository),上传到仓库中的jar包名为dwrDart-1.0.jar目录结构为dwr/mocha/dwrDart/1.0/dwrDart-1.0.jar

====================================================================

以下为网上一朋友记录的心得

之前部门配了一个Struts2的JAVA开发框架使用情况不是很理想,想通过Appfuse了解一下别人的做法,过程无比的艰辛。如果早知道APPFUSE需要不断的下载文件,我肯定不会用。

1、项目介绍
appfuse是一个框架生成工具。如果全部设置妥当,可以通过几个简单的命令,达到生成整个JAVA开发框架的目的,想使用Struts,spring 或者其他的开源工具,而又缺少合理的开发框架的,可以一试。 APPFUSE是使用MAVEN来运行的。MAVEN和ANT类似。

2、项目的获得
查看了很多资料,走了不少弯路。不少文章说“获得APPFUSE的两种方式,MAVEN下载或者CVS”,不太准确。
最好还是下载Maven以后,再appfuse-dependencies-2.0.2.zip或者 appfuse-dependencies-2.0.1.zip解压到Maven的.m2repository目录下面去 。
环境:jdk1.5.0_11 MYSQL 5.0TOMCAT 6.0.14,apache-maven-2.0.10,appfuse-dependencies-2.0.1.zip 。
注意版本。MS因为“DLL HELL”经常受人抨击,但是JAVA的简直就是“Version hell under hell”

3、遇到的问题和解决
(1)环境变量设置。
写批处理文件的时候,“SET MAVEN_HOME=D:appfuseapache-maven-2.0.10 ;” ,后面多了一个分号,浪费了半个小时。

(2)MYSQL
在服务管理器中启动失败。查看操作系统日志内容 “ Default storage engine (InnoDB) is not available”。
网上搜索到一个解决方法:“更改 myini 里面Default storage engine=InnoDB修改为MYISAM ”,事实证明这么做不好,MYSQL是启动了,但是后面引发了其他的错误。
最后的解决:解决方法:
1、删除在MySQL安装目录下的Data目录中的ib_logfile0,ib_logfile1INFO oDBibdata1
2、重新启动MySQL的Service

(3)apache-tomcat-6.0.14.zip
跑的过程中,会自动下载apache-tomcat-6.0.14.zip ,为了节约时间,自己手动下载了一个,但是一直报错。后来发现是官方上的apache-tomcat-6.0.14.zip 出了问题,下载下来的只有4.8M,总共有6.2M。所以解压错误。

(4)SQL SERVER2005连接

把MYSQL更改为2005的时候,注意把TCP/IP打开,同时端口使用下面的IPALL 的TCP动态端口 。默认是2385

(5)SQL SERVER2005下,使用mvn appfuse:gen model命令生成POJO出错

Can't generate seam entities| org.hibernate.cfg.JDBCBinderException: Duplicate class name

因为默认了去生成DBO和SYS等用户下的所有表和视图。出现了重名的POJO,所以报错。
targettest-classeshibernate.reveng.xml 里面加入<schema-selection match-schema="dbo"/>

(6)生成DAOSERVICE报错

Property 'http://apache.org/xml/features/nonvalidating/load-external-dtd' is not recognized.
org.xml.sax.SAXNotRecognizedException: Property 'http://apache.org/xml/features/nonvalidating/load-external-dtd' is not recognized.

解决:更换APPFUSE 2.0.2为2.0.1。项目作者MATT拿这个BUG没辙。。。。

(7)生成奇怪的POJO

数据库里面有Table1结果生成了Table1.java和Table1Id.java两个对象。导致后面的一系列问题。

解决:数据库里面取消双主键

最后评论一下:APPFUSE,实现了常用开源框架的自动生成,不论是Struts,struts2,springMVC等,都能直接生成从持久到逻辑和测试,甚至页面的基本文件。

==============================================================

只生成一个表的代码

1.pom.xml中增加 revengfile
<groupId>org.codehaus.mojo</groupId>
<artifactId>appfuse-maven-plugin</artifactId>
<version>${appfuse.version}</version>
<configuration>
<componentProperties>
<revengfile>src/main/resources/hibernate.reveng.ftl</revengfile>
</componentProperties>
<genericCore>${amp.genericCore}</genericCore>
<fullSource>${amp.fullSource}</fullSource>
</configuration>

2. hibernate.reveng.ftl中增加
<schema-selection match-schema="PA" match-table="TABLE_NAME" />
(注意,一定要match-schema)
3. src/main/resources/jdbc.properties中增加
hibernatetool.metadatadialect=org.hibernate.cfg.reveng.dialect.OracleMetaDataDialect
=================================================================
Ejb3PropertyGetAnnotation.ftl里面的内容generateJoinColumnsAnnotation(property)修改为
<#lt/>${pojo.generateJoinColumnsAnnotation(propertycfg)}

AppFuse 2.1的安装运行步骤------利用Maven构建appfuse相关推荐

  1. 使用Intellij Idea创建第一个SpringBoot+MyBatis+MySql项目并运行(附安装教程),使用Maven构建项目并管理第三方jar

    Intellij Idea 背景 开发工具及主要框架 Maven 下载安装 settings.xml修改 IDEA配置Maven 注册私有jar Maven打包 MySql安装 配置环境变量 Inte ...

  2. Liunx下HPCC(HPC Challenge)的安装运行

    安装运行步骤 下载安装mpich 或者其他MPI实现应该也行,参考网上相关教程,已安装则可以忽略这一步. 下载安装blas wget http://www.netlib.org/blas/blas.t ...

  3. MAVEN利用Profile构建不同环境的部署包

    通常,项目要在多个环境部署,每种环境都有各自的资源配置参数,比如:数据库连接.Redis服务器地址等等. 所以,各个环境打包出来的资源是不一样的,如果手动的修改,费时费力.我们可以利用MAVAN的pr ...

  4. python3.7.0怎么运行_安装运行Python 3.7的步骤

    安装运行Python 3.7的步骤 发布时间:2020-07-03 11:52:34 来源:亿速云 阅读:120 作者:Leah 本篇文章给大家分享的是有关安装运行Python 3.7的步骤,小编觉得 ...

  5. win10系统node安装详细步骤,及安装失败解决方法-不运行安装包,直接指定运行目录

    | Node运行环境搭建 1. Node.js运行环境安装 方式一:官网下载安装包安装 版本说明: LTS = long Term Support 长期支持版 稳定版 Current 拥有最新特性 实 ...

  6. skyeye linux qt,在ARM9上安装Linux,利用SkyEye模拟器及U-BOOT引导

    提示:本人在2008年进行Linux@ARM实验,在ARM9上安装Linux.利用SkyEye模拟器及U-BOOT引导.这是实验报告.以及实验过程中留下的记录,按日期倒序排列. 本文以Creative ...

  7. windows7怎么安装android,安卓手机安装运行Win7系统教程(图文)

    有些安卓手机用户想在让自己手机中运行Win7系统,这样可以吗?又该怎么来操作呢?在安卓手机中是可以运行Windows系统,不过没有多大的意义,仅仅只是体验,并不能真正想电脑一样操作Win7系统.现在, ...

  8. java如何cmd切换到d盘_java运行步骤cmd的方法是什么?

    最近有小伙伴想了解java运行步骤cmd的方法是什么?毕竟这是作为java人员的所要学的基础知识,那么接下来,我们就来给大家讲解一下java运行步骤cmd的方法. 1.在windows下利用cmd命令 ...

  9. Windows7 XP兼容模式(XP Mode)安装必要步骤精解

    注:此文为转载内容,原文地址:http://blog.sina.com.cn/s/blog_5e9e98210101au6b.html Windows7 XP兼容模式(XP Mode)安装必要步骤精解 ...

  10. python3安装setuptools步骤_setuptools、pip的安装

    第2篇分享 安装setuptools 下载setuptools源码setuptools-25.2.0.tar.gz 选择需要的版本 这是一个压缩文件,将其解压到桌面,并进入该文件夹 按住shift键后 ...

最新文章

  1. mysqldump: Got error: 2003: Can't connect to MySQL server on '127.0.0.1' (10060)
  2. 数字转换成字符串进行连接
  3. python实现图形旋转_python轻松实现图片旋转
  4. CentOS7上搭建Hadoop集群(入门级)
  5. react 组件连动效果_React组件开发中常见的陷阱
  6. ACM成长之路(干货) 我爱ACM,与君共勉
  7. cr3格式是什么意思_尼康DX镜头是什么意思
  8. 欧姆龙CP1E PLC
  9. SiteMesh框架
  10. pika异步consumer简单使用
  11. App Tamer for Mac v2.6 应用CPU使用率管理
  12. 出色不如走运全文第二部分
  13. 计算机ip地址和用户名和密码是什么,登陆无线路由器的IP地址是多少?怎么查看登录地址...
  14. c语言水果店信息管理系统,C语言排序(1)___水果销售
  15. 2021年电工(初级)考试题库及电工(初级)复审考试
  16. Vue源码学习之Computed与Watcher原理
  17. Scrapy爬取斗破苍穹漫画
  18. 圆桌问答 (2017 第一季)
  19. 沪嘉杭共建G60科创走廊
  20. 单片机要学多久可以找到工作?能找到哪类的工作

热门文章

  1. Java小峰宿舍管理系统_基于JAVA的宿舍管理系统
  2. 搜狗输入法劝退换成了谷歌拼音
  3. 局域网和内网?系统远程桌面和内网远程软件?
  4. froala 的使用
  5. Froala editor 2.9.5 使用
  6. Word导出带目录的PDF
  7. 【预测模型】基于遗传算法优化最小二乘支持向量机实现数据分类matlab代码
  8. linux脚本入门,Linux Shell脚本教程(一):Shell入门
  9. Django 面试题
  10. JDBC学习笔记(2)---B站尚硅谷宋红康