我在 DZone 上找到了这个很酷的帖子:
我想试一试。我一步一步地按照这个例子做的,它对我很有用。在不到 5 分钟的时间里,我描述了该 Web 应用程序并开始运行。
我决定创建自己的应用程序只是为了好玩。但它没有用,我不知道为什么会这样。我相信我以完全相同的方式做每一件事,但只是使用我自己的变量名。这是我所做的每一件事:
1- 从我的 linux 终端,创建一个文件夹并导航到它
mkdir whatsup
cd whatsup
2-我启动了 roo shell 开始工作(我的 ROO_HOME 配置正确)
/roo.sh
/ __ \/ __ \/ __ \ / /_/ / / / / / / / / _, _/ /_/ / /_/ / /_/ |_|\____/\____/ 1.2.1.RELEASE [rev 6eae723] Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER.
3-我创建了项目定义
roo> project --topLevelPackage com.hack --projectName whats-up
Created ROOT/pom.xml Created SRC_MAIN_RESOURCES Created SRC_MAIN_RESOURCES/log4j.properties Created SPRING_CONFIG_ROOT Created SPRING_CONFIG_ROOT/applicationContext.xml
4-我启用了持久层
roo> persistence setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY
创建 SPRING_CONFIG_ROOT/database.properties 更新 SPRING_CONFIG_ROOT/applicationContext.xml 创建 SRC_MAIN_RESOURCES/META-INF/persistence.xml 更新 ROOT/pom.xml [添加依赖 org.hsqldb:hsqldb:1.8.0.10, org.hibernate:hibernate-core:3.6 .9.Final, org.hibernate:hibernate-entitymanager:3.6.9.Final, org.hibernate.javax.persistence:hibernate-jpa-2.0-api:1.0.1.Final, org.hibernate:hibernate-validator:4.2 .0.Final, javax.validation:validation-api:1.0.0.GA, cglib:cglib-nodep:2.2.2, javax.transaction:jta:1.1, org.springframework:spring-jdbc:${spring.version }, org.springframework:spring-orm:${spring.version}, commons-pool:commons-pool:1.5.6, commons-dbcp:commons-dbcp:1.3]
5-我创建了我的第一个实体
roo> entity jpa --class ~.domain.Message
创建 SRC_MAIN_JAVA/com/hack/domain 创建 SRC_MAIN_JAVA/com/hack/domain/Message.java 创建 SRC_MAIN_JAVA/com/hack/domain/Message_Roo_Configurable.aj 创建 SRC_MAIN_JAVA/com/hack/domain/Message_Roo_ToString.aj 创建 SRC_MAIN_JAVA/com/hack /domain/Message_Roo_Jpa_ActiveRecord.aj 创建了 SRC_MAIN_JAVA/com/hack/domain/Message_Roo_Jpa_Entity.aj
6-我将字段添加到实体
~.domain.Message roo> field number --fieldName votes --type java.lang.Integer --notNull
更新了 SRC_MAIN_JAVA/com/hack/domain/Message.java 创建了 SRC_MAIN_JAVA/com/hack/domain/Message_Roo_JavaBean.aj
7- 将 web 层包含到我的项目中
~.domain.Message roo> web jsf setup --implementation APACHE_MYFACES --theme PEPPER_GRINDER
创建 ROOT/src/main/webapp 创建 ROOT/src/main/webapp/index.html 创建 ROOT/src/main/webapp/viewExpired.xhtml 创建 ROOT/src/main/webapp/resources/images 创建 ROOT/src/main /webapp/resources/images/csv.png
js 创建 ROOT/src/main/webapp/templates 创建 ROOT/src/main/webapp/templates/content.xhtml 创建 ROOT/src/main/webapp/templates/footer.xhtml 创建 ROOT/src/main/webapp/templates/ header.xhtml 创建 ROOT/src/main/webapp/templates/layout.xhtml 创建 ROOT/src/main/webapp/templates/menu.xhtml 创建 ROOT/src/main/webapp/pages 创建 ROOT/src/main/webapp/ pages/main.xhtml 更新 ROOT/pom.xml [添加依赖项 org.apache.myfaces.core:myfaces-api:2.1.5, org.apache.myfaces.core:myfaces-impl:2.1.5, org.primefaces: primefaces:3.1, org.primefaces.themes:south-street:1.0.3, org.springframework:spring-web:${spring.version}, javax.el:el-api:2.2, commons-fileupload:commons-fileupload :1.2.2,commons-io:commons-io:2.1;添加了存储库 xhtml 创建 ROOT/src/main/webapp/templates/header.xhtml 创建 ROOT/src/main/webapp/templates/layout.xhtml 创建 ROOT/src/main/webapp/templates/menu.xhtml 创建 ROOT/src/main/ webapp/pages 创建 ROOT/src/main/webapp/pages/main.xhtml 更新 ROOT/pom.xml [添加依赖 org.apache.myfaces.core:myfaces-api:2.1.5, org.apache.myfaces.core: myfaces-impl:2.1.5, org.primefaces:primefaces:3.1, org.primefaces.themes:south-street:1.0.3, org.springframework:spring-web:${spring.version}, javax.el:el -api:2.2,commons-fileupload:commons-fileupload:1.2.2,commons-io:commons-io:2.1;添加了存储库 xhtml 创建 ROOT/src/main/webapp/templates/header.xhtml 创建 ROOT/src/main/webapp/templates/layout.xhtml 创建 ROOT/src/main/webapp/templates/menu.xhtml 创建 ROOT/src/main/ webapp/pages 创建 ROOT/src/main/webapp/pages/main.xhtml 更新 ROOT/pom.xml [添加依赖 org.apache.myfaces.core:myfaces-api:2.1.5, org.apache.myfaces.core: myfaces-impl:2.1.5, org.primefaces:primefaces:3.1, org.primefaces.themes:south-street:1.0.3, org.springframework:spring-web:${spring.version}, javax.el:el -api:2.2,commons-fileupload:commons-fileupload:1.2.2,commons-io:commons-io:2.1;添加了存储库 xhtml 更新 ROOT/pom.xml [添加依赖项 org.apache.myfaces.core:myfaces-api:2.1.5, org.apache.myfaces.core:myfaces-impl:2.1.5, org.primefaces:primefaces:3.1, org.primefaces.themes:south-street:1.0.3, org.springframework:spring-web:${spring.version}, javax.el:el-api:2.2, commons-fileupload:commons-fileupload:1.2.2 , commons-io:commons-io:2.1; 添加了存储库 xhtml 更新 ROOT/pom.xml [添加依赖项 org.apache.myfaces.core:myfaces-api:2.1.5, org.apache.myfaces.core:myfaces-impl:2.1.5, org.primefaces:primefaces:3.1, org.primefaces.themes:south-street:1.0.3, org.springframework:spring-web:${spring.version}, javax.el:el-api:2.2, commons-fileupload:commons-fileupload:1.2.2 , commons-io:commons-io:2.1; 添加了存储库 http://repository.primefaces.org;添加依赖 org.primefaces.themes:pepper-grinder:1.0.3; 将项目类型更新为战争] 创建 SRC_MAIN_WEBAPP/WEB-INF 创建 SRC_MAIN_WEBAPP/WEB-INF/web.xml
8-我执行了一个包
~.domain.Message roo> web jsf all --package ~.jsf
创建 ROOT/src/main/resources/com/hack/jsf/i18n 创建 ROOT/src/main/resources/com/hack/jsf/i18n/messages_de.properties 创建 ROOT/src/main/resources/com/hack/jsf /i18n/messages_en.properties 创建 ROOT/src/main/resources/com/hack/jsf/i18n/messages_es.properties 创建 SRC_MAIN_JAVA/com/hack/jsf 创建 SRC_MAIN_JAVA/com/hack/jsf/MessageBean.java 创建 SRC_MAIN_JAVA/com /hack/jsf/converter 创建 SRC_MAIN_JAVA/com/hack/jsf/converter/MessageConverter.java 创建 SRC_MAIN_WEBAPP/WEB-INF/faces-config.xml 创建 SRC_MAIN_JAVA/com/hack/jsf/ApplicationBean.java 创建 SRC_MAIN_JAVA/com/hack /jsf/util 创建了 SRC_MAIN_JAVA/com/hack/jsf/util/LocaleBean.java 创建了 SRC_MAIN_JAVA/com/hack/jsf/util/ViewExpiredExceptionExceptionHandlerFactory。java Created SRC_MAIN_JAVA/com/hack/jsf/util/ViewExpiredExceptionExceptionHandler.java Created SRC_MAIN_WEBAPP/pages/message.xhtml Created SRC_MAIN_JAVA/com/hack/jsf/ApplicationBean_Roo_ApplicationBean.aj Created SRC_MAIN_JAVA/com/hack/jsf/ApplicationBean_Roo_Configurable.aj Created SRC_MAIN_JAVA/ com/hack/jsf/converter/MessageConverter_Roo_Converter.aj 创建 SRC_MAIN_JAVA/com/hack/jsf/converter/MessageConverter_Roo_Configurable.aj 创建 SRC_MAIN_JAVA/com/hack/jsf/MessageBean_Roo_Serializable.aj 创建 SRC_MAIN_JAVA/com/hack/jsf/MessageBean_Roo_Configurable.aj 创建SRC_MAIN_JAVA/com/hack/jsf/MessageBean_Roo_ManagedBean.ajaj 创建了 SRC_MAIN_JAVA/com/hack/jsf/converter/MessageConverter_Roo_Converter.aj 创建了 SRC_MAIN_JAVA/com/hack/jsf/converter/MessageConverter_Roo_Configurable.aj 创建了 SRC_MAIN_JAVA/com/hack/jsf/MessageBean_Roo_Serializable.aj 创建了 SRC_MAIN_JAVA/com/hack/jsf/ MessageBean_Roo_Configurable.aj 创建了 SRC_MAIN_JAVA/com/hack/jsf/MessageBean_Roo_ManagedBean.ajaj 创建了 SRC_MAIN_JAVA/com/hack/jsf/converter/MessageConverter_Roo_Converter.aj 创建了 SRC_MAIN_JAVA/com/hack/jsf/converter/MessageConverter_Roo_Configurable.aj 创建了 SRC_MAIN_JAVA/com/hack/jsf/MessageBean_Roo_Serializable.aj 创建了 SRC_MAIN_JAVA/com/hack/jsf/ MessageBean_Roo_Configurable.aj 创建了 SRC_MAIN_JAVA/com/hack/jsf/MessageBean_Roo_ManagedBean.aj
9- 退出 roo shell
~.jsf roo> quit
10-在 linux 终端,从项目内部,我确实运行了教程中建议的命令以在 tomcat 7 中执行
~/hackday/whatsup$ mvn package org.codehaus.cargo:cargo-maven2-plugin:run -Dcargo.maven.containerId=tomcat7x -Dcargo.maven.containerUrl=http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.22/bin/apache-tomcat-7.0.22.zip
这是尝试运行时的输出:
[INFO] 正在扫描项目... [INFO]
[INFO] ------------------------------------ ------------------------------------- [INFO] 构建最新版本 0.1.0.BUILD-快照 [信息] ---------------------------------------------------------- -------------------------- 下载: http://xxx.xx.xx.xx:8081/nexus/content/groups/public/ org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.pom 下载: http ://maven.springframework.org/release/org/primefaces/themes/pepper-grinder/1.0.3 /pepper-grinder-1.0.3.pom 下载: http ://maven.springframework.org/milestone/org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.pom 下载 : http://spring-roo-repository.springsource.org/release/org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.pom 下载: http ://repository.primefaces.org /org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.pom 下载: http ://repository.primefaces.org/org/primefaces/themes/pepper-grinder/1.0.3/ pepper-grinder-1.0.3.pom (636 B at 3.3 KB/sec) 下载: http://xxx.xx.xx.xx:8081/nexus/content/groups/public/org/primefaces/themes/pepper- grinder/1.0.3/pepper-grinder-1.0.3.jar 下载: http ://maven.springframework.org/release/org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3 .jar 下载: http://maven.springframework.org/milestone/org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.jar 下载: http ://spring-roo-repository.springsource.org /release/org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.jar 下载: http://repository.primefaces.org/org/primefaces/themes/pepper-grinder/1.0。 3/pepper-grinder-1.0.3.jar 下载: http ://repository.primefaces.org/org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.jar 在项目最新情况下编译(默认):编译器错误:allMessages = Message.findAllMessages() 处的 [ERROR] 错误;[错误] ^^^^^^ [错误] /home/cleanuser/hackday/whatsup/src/main/java/com/hack/jsf/MessageBean_Roo_ManagedBean.aj:72:0::0 方法 findAllMessages() 未定义对于 message = new Message() 处的 Message [ERROR] 类型错误;[错误] [错误] /home/cleanuser/hackday/whatsup/src/main/java/com/hack/jsf/MessageBean_Roo_ManagedBean.aj:198:0::0 类型不匹配:无法从消息转换为消息 [错误] 错误在消息 = 新消息();[错误] ^^^^ [错误] /home/cleanuser/hackday/whatsup/src/main/java/com/hack/jsf/MessageBean_Roo_ManagedBean.aj:226:0::0 类型不匹配:无法从消息转换为消息[错误] if (message.getId() 错误!= null) { [ERROR] [ERROR] /home/cleanuser/hackday/whatsup/src/main/java/com/hack/jsf/MessageBean_Roo_ManagedBean.aj:233:0::0 方法 getId() 未定义在 message.merge() 处键入字符串 [ERROR] 错误;[错误] [错误] /home/cleanuser/hackday/whatsup/src/main/java/com/hack/jsf/MessageBean_Roo_ManagedBean.aj:234:0::0 对于字符串类型未定义方法 merge() [错误] message.persist() 处的错误;[错误] [错误] /home/cleanuser/hackday/whatsup/src/main/java/com/hack/jsf/MessageBean_Roo_ManagedBean.aj:237:0::0 对于字符串类型未定义方法persist() [错误] -> [Help 1] [ERROR] [ERROR] 要查看错误的完整堆栈跟踪,请使用 -e 开关重新运行 Maven。[错误] 使用 -X 开关重新运行 Maven 以启用完整的调试日志记录。 http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
我不知道如何使它工作。如您所见,我的步骤与 DZone 教程完全相同,我不知道有什么不同。有趣的是,他们的例子有效,但我的没有。
我也试过没有运气:
mvn clean install
这会给我一个 BUILD SUCCESS 但不能让它在服务器上运行
mvn tomcat:run
与其他命令相同的结果
如果周围有人有与Spring Roo
结合使用的经验JSF
,我很感激一些帮助。