书接上回:AppFuse 3常见问题与解决方法 ,一个新问题:乱码! 在3.0.0版本号下,运行mvn appfuse:full-source命令后使用mvn jetty:run启动工程,页面上就出现了乱码。我要说的是这个乱码问题很有趣,它的有趣之处在于最后的解决方法看上去与问题差的太远。这个解决方法是:找到pom中对hibernate3-maven-plugin的配置,将当中的<executions/>部分凝视掉,即不在process-test-resources阶段运行hbm2ddl。

(假设你须要导出schema到数据库,能够手动运行mvn hibernate3:hbm2ddl,这也更符合实际开发的须要)。是的,看上去没有不论什么关系。可是问题就是出在了这里!以下我们回退到问题发生时一步步地进行排查。对于本文列出之外的一些细节问题,能够參考:基于Appfuse 2.1高速构建工程的注意事项 本文原文出处: http://blog.csdn.net/bluishglc/article/details/38640715 严禁不论什么形式的转载,否则将托付CSDN官方维护权益!

首先,查看编译之后的输出文件夹target/classes下的中文properties文件。能够确定这件文件本身就没有转码,是native2ascii插件没有正常工作吗?通过检查。发现问题不在native2ascii-maven-plugin的配置上。使用mvn clean package -X查看maven运行过程中的log信息,发现了以下一段有趣的输出:

[DEBUG] -----------------------------------------------------------------------
[DEBUG] Goal:          org.apache.maven.plugins:maven-resources-plugin:2.6:resources (default-resources)
[DEBUG] Style:         Regular
[DEBUG] Configuration: <?

xml version="1.0" encoding="UTF-8"?> <configuration> <buildFilters default-value="${project.build.filters}"/> <encoding default-value="${project.build.sourceEncoding}">${encoding}</encoding> <escapeString>${maven.resources.escapeString}</escapeString> <escapeWindowsPaths default-value="true">${maven.resources.escapeWindowsPaths}</escapeWindowsPaths> <includeEmptyDirs default-value="false">${maven.resources.includeEmptyDirs}</includeEmptyDirs> <outputDirectory default-value="${project.build.outputDirectory}"/> <overwrite default-value="false">${maven.resources.overwrite}</overwrite> <project default-value="${project}"/> <resources default-value="${project.resources}"/> <session default-value="${session}"/> <supportMultiLineFiltering default-value="false">${maven.resources.supportMultiLineFiltering}</supportMultiLineFiltering> <useBuildFilters default-value="true"/> <useDefaultDelimiters default-value="true"/> </configuration> [DEBUG] ----------------------------------------------------------------------- [DEBUG] Goal: org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) [DEBUG] Style: Regular [DEBUG] Configuration: <?

xml version="1.0" encoding="UTF-8"?> <configuration> <basedir default-value="${basedir}"/> <buildDirectory default-value="${project.build.directory}"/> <classpathElements default-value="${project.compileClasspathElements}"/> <compileSourceRoots default-value="${project.compileSourceRoots}"/> <compilerId default-value="javac">${maven.compiler.compilerId}</compilerId> <compilerReuseStrategy default-value="${reuseCreated}">${maven.compiler.compilerReuseStrategy}</compilerReuseStrategy> <compilerVersion>${maven.compiler.compilerVersion}</compilerVersion> <debug default-value="true">${maven.compiler.debug}</debug> <debuglevel>${maven.compiler.debuglevel}</debuglevel> <encoding default-value="${project.build.sourceEncoding}">${encoding}</encoding> <executable>${maven.compiler.executable}</executable> <failOnError default-value="true">${maven.compiler.failOnError}</failOnError> <forceJavacCompilerUse default-value="false">${maven.compiler.forceJavacCompilerUse}</forceJavacCompilerUse> <fork default-value="false">${maven.compiler.fork}</fork> <generatedSourcesDirectory default-value="${project.build.directory}/generated-sources/annotations"/> <maxmem>${maven.compiler.maxmem}</maxmem> <meminitial>${maven.compiler.meminitial}</meminitial> <mojoExecution>${mojoExecution}</mojoExecution> <optimize default-value="false">${maven.compiler.optimize}</optimize> <outputDirectory default-value="${project.build.outputDirectory}"/> <projectArtifact default-value="${project.artifact}"/> <showDeprecation default-value="false">${maven.compiler.showDeprecation}</showDeprecation> <showWarnings default-value="false">${maven.compiler.showWarnings}</showWarnings> <skipMain>${maven.main.skip}</skipMain> <skipMultiThreadWarning default-value="false">${maven.compiler.skipMultiThreadWarning}</skipMultiThreadWarning> <source default-value="1.5">1.7</source> <staleMillis default-value="0">${lastModGranularityMs}</staleMillis> <target default-value="1.5">1.7</target> <useIncrementalCompilation default-value="true">${maven.compiler.useIncrementalCompilation}</useIncrementalCompilation> <verbose default-value="false">${maven.compiler.verbose}</verbose> <mavenSession default-value="${session}"/> <session default-value="${session}"/> </configuration> [DEBUG] ----------------------------------------------------------------------- [DEBUG] Goal: org.codehaus.mojo:native2ascii-maven-plugin:1.0-beta-1:native2ascii (native2ascii-utf8) [DEBUG] Style: Regular [DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?> <configuration> <encoding default-value="${project.build.sourceEncoding}">UTF8</encoding> <includes> <include>ApplicationResources_zh*.properties</include> <include>displaytag_zh*.properties</include> </includes> <tempDir default-value="${project.build.directory}"/> <workDir default-value="${project.build.outputDirectory}"/> </configuration> [DEBUG] ----------------------------------------------------------------------- [DEBUG] Goal: org.apache.maven.plugins:maven-resources-plugin:2.6:testResources (default-testResources) [DEBUG] Style: Regular [DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?

> <configuration> <buildFilters default-value="${project.build.filters}"/> <encoding default-value="${project.build.sourceEncoding}">${encoding}</encoding> <escapeString>${maven.resources.escapeString}</escapeString> <escapeWindowsPaths default-value="true">${maven.resources.escapeWindowsPaths}</escapeWindowsPaths> <includeEmptyDirs default-value="false">${maven.resources.includeEmptyDirs}</includeEmptyDirs> <outputDirectory default-value="${project.build.testOutputDirectory}"/> <overwrite default-value="false">${maven.resources.overwrite}</overwrite> <project default-value="${project}"/> <resources default-value="${project.testResources}"/> <session default-value="${session}"/> <skip>${maven.test.skip}</skip> <supportMultiLineFiltering default-value="false">${maven.resources.supportMultiLineFiltering}</supportMultiLineFiltering> <useBuildFilters default-value="true"/> <useDefaultDelimiters default-value="true"/> </configuration> [DEBUG] --- init fork of com.github:demo:1.0-SNAPSHOT for org.codehaus.mojo:hibernate3-maven-plugin:2.2:hbm2ddl (default) --- [DEBUG] Dependencies (collect): [] [DEBUG] Dependencies (resolve): [] [DEBUG] ----------------------------------------------------------------------- [DEBUG] Goal: org.apache.maven.plugins:maven-resources-plugin:2.6:resources (default-resources) [DEBUG] Style: Regular [DEBUG] Configuration: <?

xml version="1.0" encoding="UTF-8"?> <configuration> <buildFilters default-value="${project.build.filters}"/> <encoding default-value="${project.build.sourceEncoding}">${encoding}</encoding> <escapeString>${maven.resources.escapeString}</escapeString> <escapeWindowsPaths default-value="true">${maven.resources.escapeWindowsPaths}</escapeWindowsPaths> <includeEmptyDirs default-value="false">${maven.resources.includeEmptyDirs}</includeEmptyDirs> <outputDirectory default-value="${project.build.outputDirectory}"/> <overwrite default-value="false">${maven.resources.overwrite}</overwrite> <project default-value="${project}"/> <resources default-value="${project.resources}"/> <session default-value="${session}"/> <supportMultiLineFiltering default-value="false">${maven.resources.supportMultiLineFiltering}</supportMultiLineFiltering> <useBuildFilters default-value="true"/> <useDefaultDelimiters default-value="true"/> </configuration> [DEBUG] --- exit fork of com.github:demo:1.0-SNAPSHOT for org.codehaus.mojo:hibernate3-maven-plugin:2.2:hbm2ddl (default) ---

这段log的有趣之处在于:resources:resources 被运行了两次。第一次是在native2ascii:native2ascii之前,第二次是在 native2ascii:native2ascii 运行之后运行hbm2ddl时又被又一次调用了一次。为了准确地了解resources:resources和native2ascii:native2ascii的运行顺序,我们从它们各自的文档上找到它们默认绑定的周期说明:

resources:resources -> process-resources

native2ascii:native2ascii -> process-classes

maven的默认生命周期例如以下:

<phases><phase>validate</phase><phase>initialize</phase><phase>generate-sources</phase><phase>process-sources</phase><phase>generate-resources</phase><phase>process-resources</phase><phase>compile</phase><phase>process-classes</phase><phase>generate-test-sources</phase><phase>process-test-sources</phase><phase>generate-test-resources</phase><phase>process-test-resources</phase><phase>test-compile</phase><phase>process-test-classes</phase><phase>test</phase><phase>prepare-package</phase><phase>package</phase><phase>pre-integration-test</phase><phase>integration-test</phase><phase>post-integration-test</phase><phase>verify</phase><phase>install</phase><phase>deploy</phase></phases>

依照正常的逻辑, resources:resources会先于native2ascii:native2ascii将全部指定的resource文件进行filter处理之后放置于target文件夹下,之后native2ascii:native2ascii跟进。对指定的文件进行转码。这是很合理的处理方式,而我们的问题就出如今了对resources:resources第二次不正常的调用,这导致了之前经过转码的文件又被未经转码的文件覆盖了。从日志上看,导致resources:resources第二次运行的原因应该是在进入process-test-resources阶段后运行hbm2ddl触发的。也就是说是hbm2ddl的某个动作主动调用了resources:resources,至于详细的细节。是bug还是与maven3的兼容问题,这里我们不再深究,可是解决方法已经变得很清晰上,就是前文提到的做法。

转载于:https://www.cnblogs.com/wzzkaifa/p/7197520.html

AppFuse 3的乱码问题相关推荐

  1. AppFuse 3常见问题与解决方法

    很长一段时间没做SSH项目了,最近抽空看了一下升级到3.x的appfuse,对新版本使用过程中出现的一些问题进行了排查,汇总如下,以备后用.本文原文出处: http://blog.csdn.net/b ...

  2. 【转】 使用 AppFuse 快速构建 J2EE 应用

    文档选项 未显示需要 JavaScript 的文档选项 打印本页 将此页作为电子邮件发送 样例代码 级别: 中级 沈 锐 (shenrui@cn.ibm.com), 软件工程师, IBM CSDL 2 ...

  3. 使用 AppFuse 快速构建 J2EE 应用

    本文以一个 J2EE 开发者的角度,借助一个简单的应用示例,在融合了个人经验的基础上介绍了如何用 AppFuse 一步步地构建 J2EE 项目.通过阅读本文,读者不仅能够学会用 AppFuse 进行开 ...

  4. J2EE开发平台:Eclipse之Appfuse浅析

    很久没来更新过Blog了,工作忙啊,从J2ME转换到J2EE,需要学习的东西好好多啊,再加上这两年纷至沓来的各种框架,简直让人有点目不暇接啊,但是,没办法啊,所有的用人单位都需要你这个的会,那个也得会 ...

  5. Appfuse搭建过程(下源码不需要maven,lib直接就在项目里(否则痛苦死!))

    什么是Appfuse: AppFuse是一个集成了众多当前最流行开源框架与工具(包括Hibernate.ibatis.Struts.Spring.DBUnit.Maven.Log4J.Struts M ...

  6. Myeclipse中修改项目默认编码还是乱码?一步永久解决!

    在myeclipse中修改默认编码后发现项目还是乱码? 点击Windows选择Preferences 如下图

  7. Visual Studio 中文显示乱码问题

    今天在码云上Fork了一个开源工程,编译环境是Visual Studio C++, 由于自己本地平台主要是进行Linux开发,平时文档编码格式都是utf-8的,编译没问题,但运行起来就是乱码,就像下图 ...

  8. SpringSecurity安全验证中文乱码问题

    使用SpringSecurity做安全验证时发现form表单中提交中文名会出现乱码问题. 原因是因为我在web.xml配置文件中将springSecurityFilterChain拦截器放在了 cha ...

  9. Python 2x 中list 里面的中文打印效果乱码

    事情是这样的 本来是处理python2x 中list 里面的中文打印为unicode  想处理下打印为中文,处理之后打印的效果中文乱码了代码如下 #!/usr/bin/python # -*- cod ...

  10. andriod studio 注释乱码问题

    有时候导入module 发现注释乱码 简单的处理方法是点击Android studio右下角的文件编码按钮,然后选择UTF-8改选为GBK 然后 reload ,点击确定即可

最新文章

  1. win10终端仿真程序_win10下子系统的使用
  2. 有一种爱,永远也无法逾越
  3. 如何查看服务器账户密码信息文件,如何查询服务器的数据库账号密码
  4. error LNK2001:unresolved external symbol __imp__@ 解决方法
  5. 程序员面试金典 - 面试题 17.19. 消失的两个数字(数学/位运算)
  6. php操作mysql常用_PHP常用MySql操作
  7. 软件内部的定时炸弹:0-Day Log4Shell只是冰山一角
  8. 每天一种设计模式之抽象工厂模式(Java实现)
  9. html的ul和li元素
  10. 单片机实验三(D/A+DMA实验)
  11. httpclient 设置短连接_关于HTTP的长连接和短连接那些事
  12. TPS929120的CRC校验的三种实现方法
  13. 女生学计算机视力,[健康科普]女孩每天面对电脑,近视手术后视力恢复至1.0
  14. 形而上者谓之道,形而下者谓之器——asp.net学习总结
  15. 沼跃鱼早已看穿了一切
  16. LeetCode-375.猜数字大小
  17. 鸿翔dsp开发板学习笔记(1)
  18. 【JAVA】Dozer 介绍及快速入门教程
  19. CQUPT第九届ACM校赛 H 夺命毒奶
  20. 初读《偷影子的人》观后感

热门文章

  1. HCIE Security 防火墙反病毒 备考笔记(幕布)
  2. Linux桌面图形化安装详解
  3. Linux之web服务搭建静态网页------综合练习
  4. CVPR 2018:阿里提出新零样本学习方法,有效解决偏置问题
  5. SQL结构化查询语言分类介绍
  6. Jasmine基础API
  7. BZOJ1588(HNOI2002)营业额统计
  8. java类转为update_[转] Maven更新父子模块的版本号, mvn versions:set
  9. base64与base64url编码
  10. Redis 6.0 源码阅读笔记(12) -- Redis 集群建立流程