JBPM ANT 脚本详解
<target name="demo.setup" depends="install.jboss, install.jbpm.into.jboss, start.jboss" description="installs jboss, installs jbpm into jboss, starts jboss, creates the jBPM DB schema, deploys examples, loads example identities, installs and starts eclipse"> <ant antfile="${jbpm.home}/db/build.xml" target="create.jbpm.schema" /> <ant antfile="${jbpm.home}/examples/build.xml" target="deploy.examples" /> <ant antfile="${jbpm.home}/db/build.xml" target="load.example.identities" /> <ant antfile="${jbpm.home}/gpd/build.xml" target="install.eclipse" /> <ant antfile="${jbpm.home}/gpd/build.xml" target="start.eclipse" /> </target> |
这是 demo.setup 的脚本。很明显的看出, demo.setup 都做了些什么。
1、 安装 jboss
2、 将 jbpm 发布到 jboss 中
3、 启动 jboss
4、 执行 jbpm 建表脚本
5、 将 examples 发布到 jboss 中
6、 创建数据库初始化数据
7、 安装 eclipse
8、 启动 eclipse
<target name="install.jboss" depends="log.properties, get.jboss" description="unzips jboss, downloads jboss to $jboss.distro.dir} if its not available"> <unzip src="${jboss.distro.path}" dest="${jboss.home}/.." /> <chmod perm="a+x" file="${jboss.home}/bin/run.sh" os="Linux, Mac OS X" /> <chmod perm="a+x" file="${jboss.home}/bin/shutdown.sh" os="Linux, Mac OS X" /> </target> |
1 )他首先要获取 JBOSS, 依赖于这个任务 get.jboss
<condition property="is.jboss.distro.available"> <available file="${jboss.distro.path}" /> </condition> <target name="get.jboss" unless="is.jboss.distro.available" description="downloads jboss into ${jboss.distro.dir}"> <mkdir dir="${jboss.distro.dir}" /> <get src="${jboss.distro.url}" dest="${jboss.distro.path}" /> </target> |
这个意思是如果已经存在了 JBOSS ,这个任务就算完成了。如果不存在,他会从网站上下载一个。
<target name="install.jbpm.into.jboss" depends="log.properties" description="installs jbpm into jboss"> <antcall target="internal.install.jbpm.into.jboss.common" /> <antcall target="internal.install.jbpm.into.jboss.500specifics" /> <antcall target="internal.install.jbpm.into.jboss.db.${database}" /> </target> |
这个脚本执行了三个任务
1)internal.install.jbpm.into.jboss.common 将一些 common 文件安装到 JBOSS 中
<target name="internal.install.jbpm.into.jboss.common"> <!-- copy static configuration files --> <copy todir="${jboss.server.config.dir}" overwrite="true"> <fileset dir="${jbpm.home}/jboss/config.common" /> </copy>
<!-- copy the right hibernate configuration file --> <copy file="${jbpm.home}/jboss/hibernate.cfg/${database}.hibernate.cfg.xml" tofile="${jboss.server.config.dir}/deploy/jbpm/jbpm-service.sar/jbpm.hibernate.cfg.xml" overwrite="true" />
<!-- copy the right datasource configuration file and replace the jdbc properties with the values in the jdbc/${database}.properties file --> <copy todir="${jboss.server.config.dir}/deploy/jbpm" overwrite="true"> <filterset filtersfile="${jbpm.home}/db/jdbc/${database}.properties" /> <fileset dir="${jbpm.home}/jboss/datasources"> <include name="jbpm-${database}-ds.xml"/> </fileset> </copy>
<copy todir="${jboss.server.config.dir}/lib" overwrite="true"> <fileset dir="${jbpm.home}"> <include name="jbpm.jar" /> </fileset> <fileset dir="${jbpm.home}/lib"> <include name="gwt-console-server-integration.jar" /> <include name="gwt-console-rpc.jar" /> </fileset> </copy>
<copy todir="${jboss.server.config.dir}/deploy/jbpm" overwrite="true"> <fileset dir="${jbpm.home}/lib"> <include name="gwt-console.war" /> <include name="gwt-console-server.war" /> </fileset> </copy>
<copy todir="${jboss.server.config.dir}/deploy/jbpm/jbpm-service.sar" overwrite="true"> <fileset dir="${jbpm.home}/lib"> <include name="jbpm-console-integration.jar" /> <include name="jbpm-console-form-plugin.jar" /> <include name="freemarker.jar" /> <include name="livetribe-jsr223.jar" /> <include name="juel*.jar" /> </fileset> </copy>
<copy todir="${jboss.server.config.dir}/deployers/jbpm.deployer" overwrite="true"> <fileset dir="${jbpm.home}/lib"> <include name="jbpm-spi.jar"/> </fileset> </copy>
<mkdir dir="${jboss.home}/docs/examples/jbpm" /> <copy todir="${jboss.home}/docs/examples/jbpm" overwrite="true"> <fileset dir="${jbpm.home}/jboss/datasources" /> </copy> </target> |
1 、首先将 jboss/config.common 里面所有的内容拷贝 JBOSS 服务器中的 server\default 目录下。
2 、接着将对应数据库的 hibernate 配置文件更名后放置到 Jbpm 的工程跟目录下
使用 jdbc properties 文件的内容,配置数据的的 ds.xml 文件 ,并放置到 JBOSS , JBPM 工程的根目录下。
3 、将 JBPM.jar 、 gwt-console-server-integration.jar 、 gwt-console-rpc.jar 放置到 server\default\lib 目录下
4 、将两个 war 包 gwt-console.war 、 gwt-console-server.war 放置到 jbpm 的根目录下
5 、将 jbpm-console-integration.jar 、 jbpm-console-form-plugin.jar 、 freemarker.jar 、 livetribe-jsr223.jar 、 juel*.jar 放置到 default\deploy\jbpm\jbpm-service.sar 目录下
6 、将 jbpm-spi.jar 放置到 \server\default\deployers\jbpm.deployer
7 、将相关文档放置到文档目录
2)internal.install.jbpm.into.jboss.500specifics 安装 JBOSS5 的特殊配置
<target name="internal.install.jbpm.into.jboss.500specifics" if="jboss.version.5"> <!-- copy static configuration files --> <copy todir="${jboss.server.config.dir}" overwrite="true"> <fileset dir="${jbpm.home}/jboss/config.jboss5" /> </copy>
<copy todir="${jboss.server.config.dir}/deploy/jbpm/jbpm-service.sar" overwrite="true"> <fileset dir="${jbpm.home}/lib"> <include name="jbpm-spi.jar"/> </fileset> </copy>
<copy todir="${jboss.server.config.dir}/deployers/jbpm.deployer" overwrite="true"> <fileset dir="${jbpm.home}/lib"> <include name="jbpm-jboss5.jar"/> </fileset> </copy> </target> |
1 、将 jboss5 的配置文件拷贝到 Jboss 服务起的相关目录中
2 、将 jbpm-spi.jar 拷贝到 deploy/jbpm/jbpm-service.sar 目录中
3 、将 jbpm-jboss5.jar 拷贝到 deployers/jbpm.deployer 目录中
3)internal.install.jbpm.into.jboss.db.${database} 就是将对应的 JDBC 驱动拷贝到对应目录中
<target name="start.jboss" depends="log.properties" description="starts jboss and waits till jboss is booted, then lets jboss run in the background"> <taskdef name="start-jboss" classname="org.jbpm.pvm.internal.ant.StartJBossTask"> <classpath> <fileset dir="${jbpm.home}"> <include name="jbpm.jar" /> </fileset> </classpath> </taskdef> <start-jboss jbosshome="${jboss.home}" /> </target> |
执行 jbpm 建表脚本
它首先调用一个 ant 脚本 db\build.xml . 执行 create.jbpm.schema 任务。
他仅仅是通过 JBDC 使用配置文件 db/jdbc/${database}.properties 配置的信息执行 db/schema.scripts/jbpm.${database}.create.sql 文件而已
四、 将 examples 发布到 jboss 中
同样也是通过调用 ant 脚本 examples/build.xml 。执行 deploy.examples 完成此功能。只是将所有 java 文件编译一下,用 jar 打成一个 bar 文件(为什么是 bar 文件?)发布任务是用 jbpm 扩张 ant 的 Class org.jbpm.pvm.internal.ant.JbpmDeployTask 来完成的。
五、 这一步和第四步是一样的,不过 sql 文件换成 db/example.identities.sql 。功能是向数据库中增加初始化数据。
六、 剩下的两步就不讲了,只是安装 eclipse 而已,目前还没有发现什么用处,也没有给 eclipse 装 jbpm 的插件,不知道这个是用来干什么。应该可以改进一下,变成安装 eclipse 并安装 jbpm 插件