游戏业务逻辑拆分,mvn war包引用war包解决方案

游戏服务器端打为了一个war包。

这次做项目时,希望将游戏中的通用模块及通用业务模块拆分至一个公共项目中,然后每个游戏可以分别建立一个项目来引用公共项目,可以只需要写业务逻辑,而不再需要关心其它的方面。

2013.11.06 记:

其实前几天已经解决掉了最后一个遇到的问题:这里还要感谢run jetty插件的作者。

现在开始动手进行项目改造:

  1. 这里核心工程定义为xcore,定义依赖工程文件xcore-dep,提供用来进行编译所需要的类。
  2. 定义另一个工程xcore-game,该工程为实际发布的游戏包。这里放在这里是为了调试xcore工程。以后开发新游戏时,直接复制xcore-game包即可。
  3. 定义第三个工程xcore-moon,测试工程,用来测试更为复杂的功能。(这个等前两个工程完工后再完成).
  4. 先在xcore工程下尝试运行看看能否运行。mvn、jetty:run及jetty:run-war。全部运行通过。
  5. 在xcore中的pom.xml中添加以下代码,用来生成xcore中的包含类的jar包
    			<plugin>
    				<artifactId>maven-war-plugin</artifactId>
    				<version>2.4</version>
    				<configuration>
    					<attachClasses>true</attachClasses>
    				</configuration>
    			</plugin
  6. 在xcore-game工程中修改pom.xml
    			<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-war-plugin</artifactId>
    				<version>2.4</version>
    				<configuration>
    					<useCache>false</useCache>
    					<workDirectory>target/overlay-war-folder</workDirectory>
    					<overlays>
    						<overlay>
    						</overlay>
    						<overlay>
    							<groupId>cn.XXXXX</groupId>
    							<artifactId>xcore</artifactId>
    						</overlay>
    					</overlays>
    				</configuration>
    			</plugin>
  7. 运行xcore-game工程,遇到以下错误
    [ERROR] Nested in org.springframework.beans.factory.BeanCreationException: Error
     creating bean with name 'org.mybatis.spring.mapper.MapperScannerConfigurer#0' d
    efined in file [D:\workspace\xcore-game\target\tmp\webapp\WEB-INF\classes\applic
    ationContext-mybatis.xml]: Initialization of bean failed; nested exception is ja
    va.lang.NoSuchFieldError: NULL:
    java.lang.NoSuchFieldError: NULL
            at org.springframework.expression.TypedValue.<clinit>(TypedValue.java:31
    )

    打开生成的war包,发现里面spring-expression引入了两个不同的版本,修改pom.xml将旧版本排除掉。OK,顺利解决问题。

  8. 奇怪,前几天明明ren jetty插件可以正常运行,现在竟然跑不起来了。有空再查吧,先用jetty:run-war凑活。
  9. run jetty插件失效的原因找到了,在原工程里面mvn可以成功编译工程,现在新的工程中,依赖eclipse编译源码,mvn无法成功编译源码,无法编译的原因后续再查。(原因查找到了,原来我是copy过来的pom.xml,里面的包名没有修改导致的)
发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>