文档章节

在 Gradle 脚本中处理Manifest: ClassPath

闪电
 闪电
发布于 2015/06/06 10:38
字数 426
阅读 38
收藏 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插件相关知识

插件 Gradle内核本身提供的自动化构建功能十分有限,所有实际的功能都是通过插件的形势提供的,如编译Java代码的功能。通过插件可以: 1. 添加新的Tasks,比如JavaCompile Task 2. 在Gradle中...

JackMeGo
2017/06/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

node.js学习笔记之koa框架和简单爬虫练习

Koa -- 基于 Node.js 平台的下一代 web 开发框架 koa是由 Express 原班人马打造的,致力于成为一个更小、更富有表现力、更健壮的 Web 框架。 使用 koa 编写 web 应用,可以免除重复繁琐的回调...

前端小攻略
6分钟前
0
0
JavaScript中的继承及实现代码

JS虽然不像是JAVA那种强类型的语言,但也有着与JAVA类型的继承属性,那么JS中的继承是如何实现的呢? 一、构造函数继承 在构造函数中,同样属于两个新创建的函数,也是不相等的 function Fn...

peakedness丶
28分钟前
1
0
记一次面试最常见的10个Redis"刁难"问题

导读:在程序员面试过程中Redis相关的知识是常被问到的话题。作为一名在互联网技术行业打击过成百上千名的资深技术面试官,本文作者总结了面试过程中经常问到的问题。十分值得一读。 Redis在...

小刀爱编程
41分钟前
14
0
TiDB Lab 诞生记 | TiDB Hackathon 优秀项目分享

本文由红凤凰粉凤凰粉红凤凰队的成员主笔,他们的项目 TiDB Lab 在本届 TiDB Hackathon 2018 中获得了二等奖。TiDB Lab 为 TiDB 培训体系增加了一个可以动态观测 TiDB / TiKV / PD 细节的动画...

TiDB
54分钟前
4
0
当区块链遇到零知识证明

本文由云+社区发表 当区块链遇到零知识证明 什么是零知识证明 零知识证明的官方定义是能够在不向验证者任何有用的信息的情况下,使验证者相信某个论断是正确的。这个定义有点抽象,下面笔者举...

腾讯云加社区
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部