文档章节

解决Gradle生成Eclipse支持后,发布到Tomcat丢失依赖jar包的问题

h
 heiyexue
发布于 2014/08/28 17:31
字数 459
阅读 509
收藏 4


最近一个项目中,使用号称下一代构建工具的Gradle构建项目。

使用中发现一个问题,Gradle从中央库下载的jar文件在系统的其它目录,使用gradle eclipse添加Eclipse支持时,jar文件是以外部依赖的形式导入的。Eclipse将web项目发布到Tomcat时,是不会自动发布这些依赖的。

可以通过Eclipse在项目上右击 - Propertics - Deployment Assembly,添加“Java Build Path Entries”,添加所有依赖的jar包,就可以在发布时自动发布外部依赖的jar包。

但是手动添加,是不符合自动化构建的要求的,打开.classpath文件,发现gradle自动生成的文件含有类似如下的代码

复制代码
<classpathentry sourcepath="C:/Documents and Settings/XXX/.gradle/caches/artifacts-24/filestore/commons-collections/commons-collections/3.2/source/73d0340eaecbb0ec9d3e0ace90547ef08cbfaf27/commons-collections-3.2-sources.jar" kind="lib" path="C:/Documents and Settings/XXX/.gradle/caches/artifacts-24/filestore/commons-collections/commons-collections/3.2/jar/f951934aa5ae5a88d7e6dfaa6d32307d834a88be/commons-collections-3.2.jar" exported="true" />
复制代码

 

在Eclipse中设置好Deployment Assembly后,代码变为这样

复制代码
<classpathentry sourcepath="C:/Documents and Settings/XXX/.gradle/caches/artifacts-24/filestore/commons-collections/commons-collections/3.2/source/73d0340eaecbb0ec9d3e0ace90547ef08cbfaf27/commons-collections-3.2-sources.jar" kind="lib" path="C:/Documents and Settings/XXX/.gradle/caches/artifacts-24/filestore/commons-collections/commons-collections/3.2/jar/f951934aa5ae5a88d7e6dfaa6d32307d834a88be/commons-collections-3.2.jar" exported="true"> <attributes> <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib" /> </attributes> </classpathentry>
复制代码

 

这样就简单了,我们让gradle自动添加Deployment Assembly

在gradle.build中添加下面的代码

// 生成Eclipse支持时,自动生成Deployment Assembly
eclipse.classpath.file.withXml {
    def node = it.asNode();
    for (Node n : node.children()) {
        if ("lib".equals(n.attribute("kind"))) {
            def node_attributes =new Node(n,"attributes");
            def map =new HashMap();
            map.put("name","org.eclipse.jst.component.dependency");
            map.put("value","/WEB-INF/lib");
            def node_attribute =new Node(node_attributes,"attribute", map);
        }
    }
}

 

保存以后重新运行gradle eclipse,回到Eclipse刷新项目,现在发布项目,就能自动将所有外部依赖jar包发布到Tomcat下

© 著作权归作者所有

h
粉丝 2
博文 85
码字总数 78924
作品 0
哈尔滨
私信 提问
翻译--Gradle之Java工程入门

我们已经看到Gradle是一个通用构建工具,它可以完成相当多的任务,只要你能在脚本里定义好。如果你没写好脚本,它就啥也干不成。 大部分Java项目都是这样的流程:编译源文件,单元测试,打成...

davelet
2014/01/12
0
0
Linux系统Nginx+Tomcat+Codis实现session共享

用户:root Tomcat版本:apache-tomcat-7.0.52 接上篇,本篇是将单机Redis替换为Codis集群实现session共享。 请先配置Codis集群,可参考Linux系统Codis集群安装配置。 修改Redis源码 修改源码...

Listen_ing
2016/05/16
654
3
Maven发布web项目到tomcat

  在java开发中经常要引入很多第三方jar包;然而无论是java web开发还是其他java项目的开发经常会由于缺少依赖包引来一些不必要的异常。常常也是因为这样的原因导致许多简单的缺包和版本问...

无声胜有声
2015/11/14
0
0
源码编译spring

到github 下载一份源代码 https://github.com/spring-projects/spring-framework 我这里放在 D:gitclonespring-framework 目录 构建项目前需要下载gradle,到http://gradle.org/下载,然后配置...

jxlgzwh
2016/06/26
537
0
Gradle 构建 android 应用常见问题解决指南

前言 android gradle 插件已经发展到0.5.7,同时gradle 本身也到了1.8,相比两个月前,android gradle 更快,更完善,也更好用了,为了让各位androider 早日用上gradle这样的神器,特地写一篇关于g...

军歌
2014/02/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

干货 | 京东云弹性伸缩功能实践

弹性伸缩AS(Auto Scaling)是一项 Web 服务,可以根据您的业务需求和策略,自动调整云主机计算资源,可帮助确保您拥有适量的云主机实例来处理您的应用程序负载。 使用 AS 进行容量调整,您只需...

京东云技术新知
28分钟前
2
0
Docker 问答录(100 问)

Docker 问答录(100 问)

石日天
28分钟前
2
0
CQRS之旅——旅程6(我们系统的版本管理)

  旅程6:我们系统的版本管理      准备下一站:升级和迁移      “变化是生活的调味品。”威廉·考珀      此阶段的最高目标是了解如何升级包含实现CQRS模式和事件源的限界上下...

SEOwhywhy
29分钟前
2
0
批量自动化配置Dell服务器idrac管理口IP

背景说明 工作中经常会遇到一次上几十台、几百台服务器的情况 每当到这个时候小伙伴们拿台笔记本和一根网线,一台服务器、一台服务器的去修改idrac IP 为了节约这个工作量,利用dell的racad...

xiangyunyan
31分钟前
0
0
Reference Table overflow (max=1024)异常处理

首先说一下出现这个问题的背景,通过Android的Camera采集视频信息然后通过JNI来调用C来软编码,但是发现有的手机再录制时间超过5分钟后就会出现异常崩溃!通过抓log发现是:“JNI pinned ar...

shzwork
34分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部