maven

步骤:(以下步均为在命令行的输入)

------------------------------------------------------------------------------------------

第一步通过APPFUSE创建基于Struts2Basic的项目:

mvnarchetype:create-DarchetypeGroupId=org.appfuse.archetypes-DarchetypeArtifactId=appfuse-basic-struts-DremoteRepositories=http://static.appfuse.org/releases-DarchetypeVersion=2.0.1-DgroupId=com.yourproject-DartifactId=yourproject

运行创建骨架的命令,不同的框架选用不同的命令,以下是Struts2Basic的创建命令,私服构件完成后的命令

mvnarchetype:create-DarchetypeGroupId=org.appfuse.archetypes-DarchetypeArtifactId=appfuse-modular-struts-DarchetypeVersion=2.0.2-DgroupId=yourproject-DartifactId=yourproject

mvnarchetype:create-DarchetypeGroupId=org.appfuse.archetypes-DarchetypeArtifactId=appfuse-basic-struts-DarchetypeVersion=2.0.1-DgroupId=yourproject-DartifactId=yourproject

以下是SpringBasic的创建命令

mvnarchetype:create-DarchetypeGroupId=org.appfuse.archetypes-DarchetypeArtifactId=appfuse-modular-spring-DremoteRepositories=http://static.appfuse.org/releases-DarchetypeVersion=2.0.2-DgroupId=yourproject-DartifactId=yourproject

说明:DartifactId:项目名称DgroupId:包结构

执行完毕后CD到yourproject目录中

第二步:加入ECLIPSE工程文件,方便导入到ECLIPSE

mvneclipse:eclipse

第三步:修改yourproject/pom.xml配置文件

1.修改生成代码方式,找到

<genericCore>${amp.genericCore}</genericCore>

<fullSource>${amp.fullSource}</fullSource>

修改成:

<genericCore>false</genericCore>

<fullSource>true</fullSource>

注意,这里必须吧pom.xml中的genericCore属性设为false否则只会生成Action

2.数据库配置信息(mysql在最底下)

第四步:生成MODEL类

先执行,这样会把默认需要的相关类先生成

mvnappfuse:full-source

然后执行

mvnappfuse:gen-model

第五步:修改/src/main/resources/hibernate.cfg.xml添加需要生成dao,service,action,jsp的模块

第六步:生成Dao,Service,Action

mvnappfuse:gen-Dentity=你的MODEL类

这里可能会有一个提示找不到/src/main/resources/database.properties,可以不用理会

如果设置了很复杂的关联,这个生成过程会很痛苦,老是报targetinganunmapped的错,

我的解决方法是找到关联的类比如USER,先把关系映射方法和属性删掉,

然后在再把/src/main/resources/hibernate.cfg.xml其他的类声明删掉

生成成功后再把这些加上去.

第七步:把生成的配置文件写入到src目录下的配置文件中

mvnappfuse:install

最后执行mvnjetty:run-war即可打包并运行项目

打完收工

总结:DAO和service的配置文件会生成到:/src/main/webapp/applicationContext.xml中

struts的配置文件会生成到:/src/main/resources/struts.xml中

------------------------------------------------------------------------------------------

常用的命令介绍:

------------------------------------------------------------------------------------------

mvnappfuse:gen-model根据数据库的表生成java类

mvnappfuse:gen根据POJOs.生成并安装Tests,DAOs,Managers,ControllersandViews

mvnappfuse:full-source把运行所需要的org.appfuse中的依赖类转换成你的包名称

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

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

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

mvnintegration-test启动TOMCAT(或别的服务器)进行测试

mvnappfuse:remove删除appfuse:gen.生成的代码

mvnappfuse:clean清除target下的所有内容

------------------------------------------------------------------------------------------

需要注意的问题:

------------------------------------------------------------------------------------------

修改%maven_home%/conf/settings.xml

修改settings.xml中的localRepository,指向appfuse的解压目录

<settings>

<!–localRepository

|Thepathtothelocalrepositorymavenwillusetostoreartifacts.

|

|Default:~/.m2/repository

–>

<localRepository>d:/program/appfuse-dependencies-2.0.1</localRepository>

需要注意的上面的配置里说默认的资源库路径为~/.m2/repository,这是指用户的home目录,但如果这样设置在windows下,会产生一些问题,因为windows的用户目录在C:\DocumentsandSettings下,而这个目录有空格,所以最好直接指定另外的没有空格的英文路径。

由于ant1.7存在的bug(Problemwithappfuse:geninwindows),因此如果用的是ant1.7,确认一下$USER_HOME/.m2/repository是否存在,不存在手工创建,并把修改后的settings.xml拷贝到~\.m2\repository下不然在执行后续操作mvnappfuse:full-source时候会报如下错误

java.lang.IllegalArgumentException:Whennotaligningwithauserinstallyoumu

stspecifyalocalrepositorylocationusingthesetLocalRepositoryDirectory(Fi

le)method.

1.必须吧pom.xml中的genericCore属性设为false否则只会生成Action

3.运行后出现gzip该问题是压缩HTML的包导致,暂时屏蔽掉相关filter

4.使用ehcache1.3以前的版本生成的代码界面字符会变成问号,这是因为maven无法下载正确的ehcache包造成,解决方法是修改/pom.xml,在里面加上:

<dependency>

<groupId>net.sf.ehcache</groupId>

<artifactId>ehcache</artifactId>

<version>${ehcache.version}</version>

</dependency>

<ehcache.version>1.4.1</ehcache.version>

后再生成代码

5.当某张数据表被修改需要更新相应的model时,只需执行mvnappfuse:gen-Dentity=yourmodel

当添加新的数据表时间,除了执行mvnappfuse:gen-Dentity=yourmodel外,还需要执行

mvnappfuse:install来把DAO,STRUTS配置写入到SRC下的相应文件中.

6.如果希望生成的model类不在默认的model包根下,只需要在resources/hibernate.cfg.xml中修改想要生成的包路径就行,比如:

默认情况下UserInfo会生成到com.my.app.model下,把配置改成

<mappingclass="com.my.app.model.user.UserInfo"/>

UserInfo会生成到com.my.app.model.user下。

7.使用CandyforAppfuse插件时发现model都无法生成,

这是因为%MAVEN_HOME%\conf\settings.xml中localRepository属性默认为~/.m2/repository

~即当前用户在系统中的用户目录,比如WINDOWS在c:\DocumentsandSettings\username

因为路径中包含空格,所以Candy找不到,解决方法就是在命令行操作

8.关于乱码的问题

对于APPFUSE生成的工程运行时乱码是很常见的现象,造成该现象的原因也有几种:

为了偷懒,这里引用一篇网上的文章:http://www.blogjava.net/43880800/archive/2006/11/18/81892.html

对于国际化文件*.properties文件的编辑,有两个ECLIPSE插件可以推荐:PropertiesEditor和ResourceBundleEditor

再次偷懒引用一篇网文:http://blog.csdn.net/lmjq/archive/2007/06/21/1660137.aspx

不过我的IDE有点问题,这两个都装上却不好使,不知道是怎么回事。用了个笨方法:写个批处理来做。内容如下:

echobeginencoding

startC:\Progra~1\Java\jdk1.6.0\bin\native2ascii-encodingUTF-8d:\workspace\dayawa\src\ApplicationResources_zh.propertiesd:\workspace\dayawa\src\ApplicationResources_zh_CN.properties

echodone!

保存成encodeProperties.bat执行就行,当然,相关路径要设置成你的实际路径。

9.执行“mvnjetty:run-war”时,会根据POJO先删除数据库里的表再重建,如果不想对数据进行操作可以修改pom.xml,将<configuration>下的drop熟悉修改为false。不过执行“mvnjetty:run-war”仍然会执行建表操作,出现大量的错误日志,不过没有影响。

10.执行“mvnjetty:run-war”时,会清空数据表的数据并插入默认的数据,默认的数据在%PROJECT_HOME%\src\main\resources\default-data.xml配置,这个很讨厌。修改pom.xml中的<dbunit.operation.type>的配置为NONE可以屏蔽这部分操作。

PS:http://www.blogjava.net/shenlei/archive/2008/02/29/182885.html#FeedBack

ps:初学maven(2)-maven/artifactory/m2eclipse安装全过程http://www.blogjava.net/aoxj/archive/2008/08/28/225426.html

ps:结合maven进行项目架构

相关推荐