通过改变eclipse中jboss插件配置文件jboss323.xml,改变部署方式

使用Eclipse Java EE版本开发Web应用程序时, Eclipse老是将需要部署的内容打成war包。这在开发时, 是个没有必要的开销,因为大多数Web Server(或App Server)都支持exploded部署方式。 
    要让Eclipse部署的时候以exploded方式部署,其实没有想象中复杂。实际上,从Eclipse的Console中可以窥见其工作端倪(以Jboss为例,其它服务器类似): 
Buildfile: /xxx/eclipse/plugins/org.eclipse.jst.server.generic.jboss_1.6.1.v200904151730/buildfiles/jboss323.xml 
deploy.j2ee.web: 
      [jar] Building jar: 
/home/brian/Dev/Java/eclipse/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/ssh.war 
      [move] Moving 1 file to /home/brian/Dev/Java/JBoss/jboss-6.0.0.20100216-M2/server/default/deploy 
    可以看到, Eclipse环境去执行了一个Ant脚本--jboss323.xml, 具体来说是执行了其中的deploy.j2ee.web target。也正是这个target完成了war包的制作(jar任务)和部署(move任务)。如果我们要修改Eclipse的行为,需要做的事情就是修改这个target,让它只作简单的文件拷贝: 
    
<target name="deploy.j2ee.web"> 
        <property name="deploy.dir" location="${server.publish.dir}/${module.name}.war" /> 
         <mkdir dir="${deploy.dir}" /> 
        <copy todir="${deploy.dir}"> 
            <fileset dir="${module.dir}"> 
                <include name="**/*.*"/> 
                <exclude name="**/*.war"/> 
            </fileset> 
        </copy> 
        
        <sleep seconds="${pause.deploy}"/> 
        
    </target> 

   现在部署应用就会在Console中看到如下信息: 
Buildfile: /xxx/eclipse/plugins/org.eclipse.jst.server.generic.jboss_1.6.1.v200904151730/buildfiles/jboss323.xml 
   deploy.j2ee.web: 
       [copy] Copying 1 file to /home/brian/Dev/Java/JBoss/jboss-6.0.0.20100216-M2/server/default/deploy/ssh.war 
   BUILD SUCCESSFUL 
   需要说明的是: 
  如果你之前以war包形式部署过, 那么需要在服务器的部署目录(比如JBoss的server/default)下,将war包移除,否则创建文件夹时会出错。 
如果需要的话(一般如此:)),可以同时将<sleep>任务一并去掉。它会产生一段时间(10秒)的延时,作为本地开发,应该无须忍受这个延时。 
这种改动,并不能控制Eclipse执行脚本的时机,只是修改了脚本本身而已。因此,修改了某个文件(比如jsp文件)并不会立即生效(MyEclipse会产生这个效果), 而是需要等待Eclipse执行了上述脚本, 把修改后的文件部署到服务器才能生效。幸运的是,我们可以服务器的部署时间: 在Server面板中双击要修改的server, 在出现的界面中展开Publishing, 然后修改Publishing interval (in seconds)即可。 

   关于Ant脚本,严格地讲,你最好同时修改undeploy.j2ee.web target, 因为*.war已经不是一个文件,而是文件夹了,修改如下: 

<target name="undeploy.j2ee.web"> 
        <!-- 
        <delete file="${server.publish.dir}/${module.name}.war" failοnerrοr="false"> </delete> 
         --> 
        <delete dir="${server.publish.dir}/${module.name}.war" failοnerrοr="false"> </delete> 
         <sleep seconds="${pause.undeploy}"/> 
    </target> 

  类似地,如果你的项目涉及到ejb或ear,你可以修改其它几项对应的target。

转自 http://ninglei.iteye.com/blog/1107793 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值