鉴于以前写过的两篇guvnor源码构建过程有小问题,不太完善,所以此次重新总结,以帮助用到的朋友更快速无误的构建guvnor源码工程,以及新产品的打包!
源码的构建过程:
1.guvnor工程需要用maven构建,并且源码中使用了gwt技术,因此要下载maven3.0.3,下载gwt2.3并安装gwt插件,因为gwt插件只能在线安装,所以用了eclipse(INDIGO),3.7及以上版本都可.
2.下载guvnor源码,下载地址:https://github.com/droolsjbpm/guvnor,我使用的是:droolsjbpm-guvnor-5.4.0.Final.zip
3.解压源码zip包,然后cmd命令行切换到droolsjbpm-guvnor-5.4.0.Final目录下.
--执行mvn eclipse:eclipse命令,会自动将项目中依赖的包下载到maven本地仓库,并生成eclipse项目.
4.进入guvnor-webapp-drools文件夹中,打开pom.xml文件,将如下代码放在build元素下的plugins元素下。
<!-- 把依赖的jar包拷到lib目录下 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
--然后,命令行切换到guvnor-webapp-drools文件夹下,执行命令:mvn dependency:copy-dependencies -DoutputDirectory=lib
即可将此工程引用的jar包从maven本地仓库copy到文件夹下的lib目录中。
--将lib中跟导入eclipse的几个工程名一样的jar包删除掉,包括guvnor-webapp-core工程的test的jar包也删除掉,剩余266个就是所需的jar包。可将此lib下的所有jar包备份,方便打包时使用。
5.导入的项目有:droolsjbpm-ide-common,guvnor-repository,guvnor-webapp-core,guvnor-webapp-drools和guvnor-repository-connector文件夹下的三个.共计7个项目。导入时最好将eclipse的自动构建取消掉,否则导入后构建工程有可能会卡死的.
--导入后,将工程中的test包,从build path中移除掉,所有工程都是这样,因为我们用的是源码,要测试没用.
--打开guvnor-webapp-drools项目中的pom.xml文件,可将上面添加的plugin元素注释掉,不注释可能会影响以后打包,可能。
--如果这7个工程导入后有错误,依赖maven本地仓库的jar包没有显示,Problems下显示“Unbound classpath variable”,说明你的M2_REPO变量没有设置,你可以:
首选项-->java-->build path-->classpath variables,添加变量"M2_REPO",路径指定到你的maven本地仓库即可。
6.设置guvnor-webapp-drools项目,它是guvnor源码的启动项目。
--右键项目,属性,Google-->Web application ,右边的WAR directory设置成:src/main/webapp
--Java Build Path,右边的Default output folder设置成:guvnor-webapp-drools/src/main/webapp/WEB-INF/classes
--将上面lib文件夹以及里面的所有jar包,copy到guvnor-webapp-drools/src/main/webapp/WEB-INF/下。
--Java Build Path,右边的Librarys选项卡下,将引用maven的jar包Remove掉,将lib文件夹下的jar包添加进去,并将gwt-dev的包排序到第一位。
--Google,Web Toolkit,右边勾选Use Google Web Toolkit.
OK.
7.好了,我们右键项目,Run As-->Web Application,可能会出现一个错误的弹出框。
--这样的话,Run As-->Run configurations,打开一个对话框,可以看到左边Web Application下有一个index.jsp下是选中状态,
--我们要在右边设置:打开Classpath选项卡,找到User Entries,展开里面最后一项,里面即有lib下的jar包,又有引用maven的jar包,所以我们要把引用maven的jar包移除掉。
--但是直接移除是移除不掉的,只能把User Entries的最后一个子项整个移除掉,再将里面的工程添加上,lib下的jar包再引入。
8.我们可以直接点击Run了。这次不会再有错误框了,Console下会出现一些信息,不用去管它。
--最后出现一个url地址,点击后浏览器会提示安装gwt浏览器插件,下载,安装,刷新页面。
--这时,页面有可能会一直是显示“Please Wait”,看Develop Mode下有一个Error,其实是项目中设置只能用FireFox浏览器打开。
9.打开guvnor-webapp-drools项目中,找到文件FastCompiledGuvnor.gwt.xml文件,有两个set-property元素。修改如下:
<set-property name="user.agent" value="ie6,ie8,ie9,gecko1_8,safari"/>
<set-property name="locale" value="zh_CN"/>
可以让它兼容多数浏览器,以及页面显示中文。
10.好了,再运行试试看,如果还是一直显示“Please Wait”,打开运行对话框,左边选中index.jsp,右边找GWT选项卡,
下面有FastCompiledGuvnor.gwt.xml和Guvnor.gwt.xml,选中Fast,然后Restore Defaults,再运行。
相信现在你的guvnor平台已经成功打开了!
产品打包过程:
1.打开资源管理器,进入guvnor-webapp-drools文件夹.
--进入src/main/webapp目录中,将org.drools.guvnor.Guvnor目录,repository目录和derby.log文件,repository.xml文件,四个删掉.
这都是在eclipse中运行时产生的文件。
--进入src/main/webapp/WEB-INF目录中,将classes,deploy,lib三个文件夹删掉.记住lib文件夹要备份啊,开发时还要添加进去的。
2.运行cmd,切换到guvnor-webapp-drools目录下,执行命令:mvn install -Dmaven.test.skip=true , 即可完成打包,安装.可以看到target目录中有classes等多个文件夹和项目的war包,源码jar包等.
3.命令行进入guvnor-distribution-wars目录下,命令行执行命令:mvn package,即可完成对相应web服务器的打包,可以看到target目录中有三个war包.
此时,guvnor产品的打包已完成,target下三个war包分别对应不同的服务器,你可以将名称中带有tomcat的war包放到tomcat服务器中运行一下,试试看,是不是你在源码中添加的功能已经出现了。