zoukankan      html  css  js  c++  java
  • AppFuse 3常见问题与解决方法

    非常长一段时间没做SSH项目了。近期抽出时间看了一下升级到3.x的appfuse,对新版本号使用过程中出现的一些问题进行了排查。汇总例如以下。以备后用。本文原文出处: http://blog.csdn.net/bluishglc/article/details/38640715 严禁不论什么形式的转载,否则将托付CSDN官方维护权益!



    起步

    使用appfuse的第一步自然是通过archetype:generate生成项目。这本不是一问题,官方的QuickStart:http://appfuse.org/display/APF/AppFuse+QuickStart 页面上给出了帮助我们生成archetype:generate命令行的工具,不幸的是这个页面引用了一些位于googleapis.com上的js文件,中国的小朋友们可能获取不了这些文件(原因你懂的)。至少在写作这篇文章的时候googleapis.com是无法从国内訪问的。假设缺少这些JS文件,页面就不能自己主动生成命令行了,尽管这个命令本身并不复杂,可是手写出它的archetypeRepository地址和archetypeArtifactId还是非常费力的,以下给出四个演示样例,可依此为蓝本进行改动:

    演示样例一:建立名称为demo的基于spring mvc+spring+hibernate的单一project,appfuse版本号:3.0.0

    mvn archetype:generate -B -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-spring-archetype -DarchetypeVersion=3.0.0 -DgroupId=com.yourcompany -DartifactId=demo -DarchetypeRepository=https://oss.sonatype.org/content/repositories/appfuse 


    演示样例二:建立名称为demo的基于spring mvc+spring+hibernate的单一project,appfuse版本号:3.0.1-SNAPSHOT

     
    mvn archetype:generate -B -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-spring-archetype -DarchetypeVersion=3.0.1-SNAPSHOT -DgroupId=com. yourcompany -DartifactId=demo -DarchetypeRepository=https://oss.sonatype.org/content/repositories/appfuse

    演示样例三:建立名称为sample的基于spring mvc+spring+hibernate的多模块project。appfuse版本号:3.0.0
     
    mvn archetype:generate -B -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-modular-spring-archetype -DarchetypeVersion=3.0.0 -DgroupId=com. yourcompany -DartifactId=sample -DarchetypeRepository=https://oss.sonatype.org/content/repositories/appfusec 

    演示样例四:建立名称为sample的基于spring mvc+spring+hibernate的多模块project,appfuse版本号:3.0.1-SNAPSHOT
     
    mvn archetype:generate -B -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-modular-spring-archetype -DarchetypeVersion=3.0.1-SNAPSHOT -DgroupId=com. yourcompany -DartifactId=sample -DarchetypeRepository=https://oss.sonatype.org/content/repositories/appfusec

     
    生成项目之后。依照官方文档的指导非常easy就能够build并运行新建立起来的project了。可是假设你不走运的话,就可能会遇到例如以下一些问题:


    问题与解决方法



    问题一:

    使用3.0.0版本号,运行mvn appfuse:full-source失败,使用 mvn appfuse:full-source -e查看错误信息。报例如以下错误:

    [ERROR] Failed to execute goal org.appfuse.plugins:appfuse-maven-plugin:3.0.0:full-source (default-cli) on project demo: Execution default-cli of
     goal org.appfuse.plugins:appfuse-maven-plugin:3.0.0:full-source failed: java.net.UnknownHostException: raw.github.com: Unknown host raw.github.com

    解决方法:

    对于该问题,appfuse的作者在http://appfuse.547863.n4.nabble.com/Appfuse-failed-to-get-full-source-td4657086.html 中给出了解释,原因是github更改的子域名导致的。为此作者新建了一个3.0.1-SNAPSHOT版本号来解决这一问题。

    就我个人的使用情况来看这是一个非常奇怪的问题。第一次运行mvn appfuse:full-source确实遇到了这一问题。第二天就没有问题了,理论上raw.github.com会重定向到新的目标域名,可是看起来受到网络以及配置的种种原因,这个问题确实是有可能发生的。只是使用3.0.1-SNAPSHOT版本号并不是是一个好的解决方法,接下来的常见问题二就是发生在3.0.1-SNAPSHOT版本号上的。

    问题二:   

    使用3.0.1-SNAPSHOT版本号。运行mvn jetty:run时报例如以下错误:

    java.lang.IllegalStateException: org.slf4j.LoggerFactory could not be successfully initialized.


    解决方法:


    这个问题确实是开发人员给使用者挖的一个“坑”,只从报错日志上非常难找到直接原因,可是日志中的一行信息:

    An API incompatibility was encountered while executing org.eclipse.jetty:jetty-maven-plugin:xxxxxx:run: java.lang.ExceptionInInitializerError: null

    多少还是给了我们一些线索。检查使用3.0.1-SNAPSHOT版本号生成的pom.xml文件,我们发现jetty插件的配置是这种:

    <plugin>
    	<groupId>org.eclipse.jetty</groupId>
    	<artifactId>jetty-maven-plugin</artifactId>
    	<version>8.1.14.v20131031</version>
    	<configuration>
    		<webApp>
    			<contextPath>/</contextPath>
    		</webApp>
    	</configuration>
    </plugin>

    再细致地检查,我们就会发现jetty迁移eclipse之后,其版本号是从9.0.0開始的,根本没有8.1.14.v20131031这个版本号,而这个8.1.14.v20131031版本号是怎么来的呢?看看3.0.0的pom.xml我们找到了答案:

    <plugin>
    	<groupId>org.mortbay.jetty</groupId>
    	<artifactId>jetty-maven-plugin</artifactId>
    	<version>8.1.14.v20131031</version>
    	<configuration>
    		<webApp>
    			<contextPath>/</contextPath>
    		</webApp>
    	</configuration>
    </plugin>

    8.X版本号的jetty还是其在mortbay下时的版本号。非常显然,作者在从3.0.0向3.0.1-SNAPSHOT升级的时候,配错了jetty的版本号!

    这样,解决方法也就出来了,把插件配置中的<groupId>org.eclipse.jetty</groupId>改为<groupId>org.mortbay.jetty</groupId>就能够了。


    问题三:


    乱码


    解决方法


    请參考还有一篇文章:AppFuse 3的乱码问题


    建议

    因为3.0.1-SNAPSHOT尚处于开发阶段,在不同一时候期使用可能会出现不同的问题,前文提及的第二个问题就是一个样例,因此建议先使用3.0.0版。


  • 相关阅读:
    hdoj 2803 The MAX【简单规律题】
    hdoj 2579 Dating with girls(2)【三重数组标记去重】
    hdoj 1495 非常可乐【bfs隐式图】
    poj 1149 PIGS【最大流经典建图】
    poj 3281 Dining【拆点网络流】
    hdoj 3572 Task Schedule【建立超级源点超级汇点】
    hdoj 1532 Drainage Ditches【最大流模板题】
    poj 1459 Power Network【建立超级源点,超级汇点】
    hdoj 3861 The King’s Problem【强连通缩点建图&&最小路径覆盖】
    hdoj 1012 u Calculate e
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/7112491.html
Copyright © 2011-2022 走看看