文档章节

在 Gradle 脚本中处理Manifest: ClassPath

闪电
 闪电
发布于 2015/06/06 10:38
字数 426
阅读 23
收藏 0

运行Java程序时,为了告诉系统到哪里去找外部的库文件,必须以Class-Path的形式把库的路径传递给jvm。基本的方式就是在Manifest文件中指定Class-Path,在Gradle 中,可以使用如下代码:

   1: jar {
   2:     manifest {
   3:         attributes 'Main-Clas': 'your.Class'
   4:         attributes 'Class-Path': 'ext.libA.jar ext.libB.jar'
   5:     }
   6: }

问题是,如果你的项目有20个jar需要导入,难道也一个个输入吗(真正的程序员拒绝打字到手软……)?如果变更了怎么办?

Well,在这里我不打算深究Gradle的DSL,也不指望用很标准的Gradle风格来搞定一切,但既然Gradle的配置文件本质上是Groovy,那么我的确知道在groovy中可以这样做……假设你所有的jar都放在lib文件夹里。那么在build.gradle文件的开头定义 libPath = ‘lib’,然后,将前面第4行代码改为:

   1: attributes 'Class-Path': new File(libPath).list().findAll {
   2:     it.endsWith('.jar') }.collect { "$libPath/$it" }.join(' ')

这就是动态语言的表现力吐舌笑脸

PS 1: 从今天开始只用Gradle写api了,可执行的程序直接用griffon来写,所以不再有这个Class-Path的问题了。(嗯,Griffon是用Gradle来折腾的)

PS 2: CodeSnipper支持的语言太少了,没有groovy(所以也没有Grails和Griffon)、没有Python(从前天晚上等到今天早上才等来Python 3.2的发布,好辛苦)、没有Scala也没有Go,是不是我学的太小众?另外,在我的Live Writer上,如果在CodeSnipper中只打一个TAB,鼠标指针那个抖啊,抖得我害怕了。

PS 3: 新界面的Writer好蠢,发布按钮居然要点开菜单才能看到?

本文转载自:http://blog.csdn.net/hiarcs/article/details/6198945

共有 人打赏支持
闪电
粉丝 74
博文 392
码字总数 6789
作品 0
海淀
技术主管
Gradle的Android插件

Android构建系统由一个Gradle的Android插件组成。 Gradle是一个高级的构建工具集,它可以管理依赖,并使你能够定义定制化的构建逻辑。Android Studio使用了一个Gradle包装器来完整地集成Gra...

WolfCS
2015/12/23
115
0
android多渠道-N种方法-android多渠道-N种方法---MutiChannelPackup

<h1 MutiChannelPackup<p Android多渠道打包,有网页版,Gradle版,Python版、BAT脚本、Jar版…看大家的喜好选择 META-INF渠道识别型:网页版、Python版、BAT脚本、Jar版、 Manifest渠道识别...

彭建波
2015/10/16
402
0
Gradle - Manifest

Manifest DSL提供了配置以下Manifest条目的功能: minSdkVersion / targetSdkVersion / versionCode / versionName / applicationId / Instrumentation test runner android元素中的defaultCo......

老朱教授
2017/10/01
0
0
构建Gradle范例项目之构建Java项目

Gradle插件通过引入特定领域的约定和任务来构建你的项目。Java插件是Gradle自身装载的一个插件。Java插件提供的基本功能远比源代码编译和打包多。它为你的项目建立了一个标准的项目布局,并确...

柳哥
2015/10/21
1K
0
使用gradle进行构建打包操作

由于我们部署的jenkins执行的Android构建操作就是由Gradle来实现,所以以下是我们在使用gradle在执行构建操作时,gradle的构建原理 一.Gradle的安装和配置 1. 我们要从Gradle的官网,去下载g...

awesome@qa
05/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

ajax 提交返回map集合 获取不到值

后台java代码 @RequestMapping("/cameraList") @ResponseBody public Map<String, Object> cameraListForPage(@RequestParam(defaultValue = "1", value = "page") Integer page......

S三少S
8分钟前
0
0
TypeScrip最污的技术课-技术胖TypeScript图文视频教程

近日Node.js之父瑞安达尔(Ryan Dahl)发布新的开源项目 deno,从官方介绍来看,可以认为它是下一代 Node,使用 rust 语言代替 C++ 重新编写跨平台底层内核驱动,上层仍然使用 V8 引擎,最终...

JamesView
10分钟前
5
0
Es学习笔记

1.过滤排重聚合查询 筛选出某一个聚合值的个数统计。相当于mysql的distinct. 关键字:cardinality "aggs": { "2":{ "cardinality": { "field": "field" } ...

Gmupload
12分钟前
0
0
h5语义化标签

语义化HTML:用最恰当的HTML元素标签做恰当的事情。 优点: 提升可访问性; SEO; 结构清晰,利于维护; 通用容器:div——块级通用容器;span——短语内容无语义容器。 <title></title>:简...

莫西摩西
18分钟前
0
0
修改11g rac中 asm diskstring的发现路径

问题 : 如果我 们asm_disking以前是/dev/oracleasm/disks/* ,并且现在已经有磁盘组再用这个磁盘串了,那么,我们无法直接修改这个发现串为 ORCL:*,修改会报错,提示存在的磁盘无法使用新的...

tututu_jiang
21分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部