Appfuse使用中遇到的问题及解决方案

     这几天在学习使用AppFuse生成框架,测试了好几天,经常遇到一些问题。在网上找了一些资料,这里将我遇到的几个问题以及解决方案写在下面,便于以后自己回顾,也许对其他学习AppFuse的人有点帮助。

     问题一、如何生成框架?

     其实这个应该不算问题,但是对于初学者来说,如何上手才是最主要的,根据Quick Start中的介绍,只要执行如下命令就可以了。

 

mvn archetype:create -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-struts -DremoteRepositories=http://static.appfuse.org/releases -DarchetypeVersion=2.0.2 -DgroupId=com.mycompany.app -DartifactId=myproject

 

     其中groupId是生成代码的包,artifacId是工程名称。配置好maven以后执行这个语句没有问题。

     问题二、运行mvn命令

     运行mvn之前需要配置数据库,执行这个命令会在数据库中创建用户表和角色表等。数据库连接信息在新建的工程目录中的pom.xml文件中。在该文件的最后一个节点properties中,有数据库配置信息如下:

 

        <!-- Database settings -->
        <dbunit.dataTypeFactoryName>org.dbunit.dataset.datatype.DefaultDataTypeFactory</dbunit.dataTypeFactoryName>
        <dbunit.operation.type>CLEAN_INSERT</dbunit.operation.type>
        <hibernate.dialect>org.hibernate.dialect.MySQL5InnoDBDialect</hibernate.dialect>
        <jdbc.groupId>mysql</jdbc.groupId>
        <jdbc.artifactId>mysql-connector-java</jdbc.artifactId>
        <jdbc.version>
5.0.5</jdbc.version>
        <jdbc.driverClassName>com.mysql.jdbc.Driver</jdbc.driverClassName>
        <jdbc.url><!
[CDATA[jdbc:mysql://localhost/appproject?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncoding=utf-8]]></jdbc.url>
        <jdbc.username>root</jdbc.username>
        <jdbc.password>password</jdbc.password>

     需要修改的是根据工程化具体需要连接的数据库从上面复制一个配置信息下来,覆盖原始的mysql的数据库连接信息。我本地连的就是mysql,因此不用修改,只需要改一些配置信息就可以了。主要是jdbc.url,jdbc.username以及jdbc.password三个属性。

     接下来就可以在工程目录下运行mvn命令了。

     问题三、执行mvn jetty:run-war命令

     执行该命令需要注意的是生成框架时设置的框架类型有关,上面的例子是Struts 2 Basic模式的,因此只需要在工程目录下执行该命令就行,如果设置的是Struts 2 Modular模式,则需要在工程文件夹下的web目录中执行该命令。(我最开始随便选了一个Struts 2 Modular模式,在工程对应的目录中执行mvn jetty:run-war命令时系统报错。)

     问题四、执行mvn war:inplace命令

     执行这个命令不会报错,而且很顺利。需要注意的是,根据Quick Start中建议的,执行该命令之前将工程提交到版本控制系统中,这样如果后面出现问题,可以方便的进行恢复。

     问题五、执行mvn jetty:run命令

     这个命令是在mvn war:inplace命令之后执行的,需要注意的是,执行之后,如果要执行mvn jetty:run命令,需要删除一些文件,Quick Start中是这么说的:

     If you need to change any of the files in the web project, simply run mvn war:inplace in the web project to populate the src/main/webapp source directory. You will need to delete WEB-INF/lib and WEB-INF/classes/struts.xml (if you're using Struts) after doing this.

     如果不上传上面说的这些文件,执行mvn jetty:run命令将会报错。

     问题六、执行mvn appfuse:full-source命令

     这个命令的功能是:convert your project so it doesn't rely on AppFuse dependencies and includes AppFuse's source instead。

     执行这个命令遇到的问题:执行之后src文件夹下的文件都不见了,创建了一个名称为为null的文件夹,原来在src下的文件也在null下了。在网上查找了一下,原来在执行这个命令之前需要删除文件。

 

rm -r src/main/webapp/WEB-INF/lib 
rm -r src
/main/webapp/WEB-INF/classes 


     将src/main/webapp/WEB-INF/lib和src/main/webapp/WEB-INF/classes文件夹中的文件删除后就可以了。

     问题七、中文乱码

     执行完mvn appfuse:full-source之后,再运行系统,访问页面,原来的中文都成了乱码了,在网上找了很多的资料,也试着用,但是都不管用。后来经过测试,发现这和本地环境有关。系统使用的是utf-8字符集,但是操作系统的字符集应该gbk的。使用native2ascii转换时,它对待要转换的文件是作为GBK,而不是utf-8。后来使用ultra edit进行转换,再测试,中文问题也解决了。

posted on 2008-08-09 20:13  liwp_Stephen  阅读(2026)  评论(0编辑  收藏  举报

导航