最近一个项目中,使用号称下一代构建工具的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下

解决Gradle生成Eclipse支持后,发布到Tomcat丢失依赖jar包的问题的更多相关文章

  1. 解决Eclipse发布到Tomcat丢失依赖jar包的问题

    解决Eclipse发布到Tomcat丢失依赖jar包的问题 如果jar文件是以外部依赖的形式导入的.Eclipse将web项目发布到Tomcat时,是不会自动发布这些依赖的. 可以通过Eclipse在 ...

  2. Eclipse笔记-sun.misc.BASE64Encoder找不到jar包的解决方法

    从SVN检出新项目,在Eclipse中报错如下: 转: Eclipse笔记-sun.misc.BASE64Encoder找不到jar包的解决方法 2018-01-04 00:36:20 雨临Lewis ...

  3. eclipse项目自动发布到tomcat目录,缺文件。

    eclipse项目自动发布到tomcat目录,缺文件. 解决方案: 项目--Properties-->Deployment Assembly-->Add--> Folder Add- ...

  4. eclipse导入maven项目后依赖jar包更新问题->update project按钮

    eclipse导入maven项目后依赖jar包更新问题 1.eclipse有专门的导入maven项目按钮,file-import-maven project,eclipse会自动查找指定路径下的pom ...

  5. Eclipse下新建Maven项目、自动打依赖jar包

    当我们无法从本地仓库找到需要的构件的时候,就会从远程仓库下载构件至本地仓库.一般地,对于每个人来说,书房只有一个,但外面的书店有很多,类似第,对于Maven来说,每个用户只有一个本地仓库,但可以配置访 ...

  6. Eclipse下Maven新建项目、自动打依赖jar包(包含普通项目和Web项目)

    不多说,直接上干货! 当我们无法从本地仓库找到需要的构件的时候,就会从远程仓库下载构件至本地仓库.一般地,对于每个人来说,书房只有一个,但外面的书店有很多,类似第,对于Maven来说,每个用户只有一个 ...

  7. 在Eclipse上打包并使用Proguard工具混淆jar包

    近期由于工作须要,学习到了Android jar包的打包与混淆. 之前觉得还是非常easy的,可是自己深入研究下,发现还是有一些东西须要注意的,并且自己也踩了一些坑,在这里写下供同僚们借鉴借鉴. 转载 ...

  8. Springboot中IDE支持两种打包方式,即jar包和war包

    Springboot中IDE支持两种打包方式,即jar包和war包 打包之前修改pom.xml中的packaging节点,改为jar或者war    在项目的根目录执行maven 命令clean pa ...

  9. 使用Eclipse打jar包 包含依赖jar包

    1.在项目根目录新建MANIFEST.MF文件 //版本号 Manifest-Version: 1.0 //依赖jar包路径 多个用空格隔开 Class-Path: lib/commons-loggi ...

随机推荐

  1. Salesforce 执行顺序

    在服务器上,Salesforce按以下顺序执行: 1,从数据库加载原始记录或初始化一个用于更新插入(upsert)语句的记录. 2,从请求加载新记录的字段值并覆盖旧的值. 如果请求来自一个标准的UI( ...

  2. Ubuntu14 sudo apt-get install apt-show-versions出错

    vmware安装ubuntu后,sudo apt-get install apt-show-versions出现问题 E: Unable to locate package apt-show-vers ...

  3. win10+PHP7

    在D盘自定义新建文件夹ApacheServer 再在ApacheServer文件夹下分别建立php,Apache,mysql,web四个文件夹分别用来存放 php,apache,mysql,项目文件 ...

  4. struts2 的正则表达式验证不起作用解决办法

    在官网上提供的model为: <field-validator type="regex"> <param name="expression"& ...

  5. easyUI跨Tab操作datagrid

    1.在datagrid那个页面定义方法 window.top["RELOAD_MY_DATAGRID"]=function(){ $("#dg").datagr ...

  6. css 水平垂直居中

    主要是垂直居中有点麻烦,以下代码可以实现,先记下来: <style type="text/css"> div{ border:1px solid #ccc; heigh ...

  7. ThinkPhp的搭建

    一般而言,环境的搭建都是很复杂的,但是说句实话,php的环境是我见过最简单的,首先下载一个XAMPP集成软件包(这种软件包还有好多,但是我还是喜欢这个啊),然后直接安装,一路NEXT下午就ok了. 这 ...

  8. AngularJS使用指南

    ng-app 定义一个AngularJS应用程序 ng-model 把元素值绑定到AngularJS应用程序 ng-blind 把AngularJS应用程序数据绑定到HTML视图上 ng-init 初 ...

  9. Qt on Android 蓝牙开发

    版权声明:本文为MULTIBEANS ORG研发跟随文章,未经MLT ORG允许不得转载. 最近做项目,需要开发安卓应用,实现串口的收发,目测CH340G在安卓手机上非常麻烦,而且驱动都是Java版本 ...

  10. R语言解读多元线性回归模型

    转载:http://blog.fens.me/r-multi-linear-regression/ 前言 本文接上一篇R语言解读一元线性回归模型.在许多生活和工作的实际问题中,影响因变量的因素可能不止 ...