部署:将库jar与我自己的类分开

时间:2013-08-29 08:01:37

标签: tomcat deployment war ear

我想知道是否有办法将所有需要的.jars放在一个单独的.war / ear中,以便当我对代码进行微小更改时,我不必将所有库.jars部署到服务器?

因为每次我想在开发期间测试更改/上传50mb(到越位Tomcat服务器)都不是一个花时间的好方法。

我在SO上阅读的大多数主题都表示你确实想要一个包含.war文件的自我。在这种情况下,它仅与1 .war文件共享。不确定部署描述符中的某种库引用是否可行。

1 个答案:

答案 0 :(得分:0)

根据Java EE Spec,您的.jars应该部署到WAR文件中的WEB-INF/lib。我见过一些人破解Tomcat类加载器直接从外部引出(特别是在Tomcat 5+删除对CATALINA_HOME/shared/lib的支持之后),但这有其明显的缺点。

我建议您考虑更改部署过程而不是更改代码。您实际上可以对appBase进行“爆炸WAR”部署(请参阅Tomcat docs),并仅传输已更改的文件。

我为Inedo工作,我看到很多用户使用BuildMaster执行此操作。工作流程看起来像这样:

  1. 从$ / MyApp
  2. 获取最新信息
  3. 运行Ant(build.xml)
  4. 解压缩MyApp.war
  5. 创建构建工件
  6. 停止Tomcat服务
  7. 将构建工件部署到SERVER(/ path / appBase)
  8. 启动Tomcat服务
  9. 最后一步(部署构建工件)将仅部署更改的文件,这将大大减少部署50MB工件所需的时间。