文档章节

在 Gradle 脚本中处理Manifest: ClassPath

闪电
 闪电
发布于 2015/06/06 10:38
字数 426
阅读 20
收藏 0
点赞 0
评论 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
博文 391
码字总数 6789
作品 0
海淀
技术主管
Gradle的Android插件

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

WolfCS
2015/12/23
115
0
自定义Gradle插件相关知识

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

JackMeGo
2017/06/13
0
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学习(二十三)——自定义任务类

title: “Gradle学习(二十三)——自定义任务类” date: “2018-03-21” description: “Gradle提供两种类型的任务,一种是简单的任务,它在action的闭包中定义。对于这种任务,action闭包就决...

lastsweetop
03/26
0
0
使用gradle进行构建打包操作

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

awesome@qa
05/15
0
0
构建Gradle范例项目之构建Java项目

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

柳哥
2015/10/21
1K
0
Gradle - Manifest

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

老朱教授
2017/10/01
0
0
Gradle系列一 -- Groovy、Gradle和自定义Gradle插件

1. 概述 Android项目的构建过程是由Gradle框架实现的,Gradle框架是使用Groovy语言实现的,Gradle 插件是在Gradle框架的基础上实现的。因此学习一下Groovy语言的一些常用语法是有必要的。 Gr...

ForeverCy
2017/11/21
0
0
深入理解gradle编译-Android基础篇

9/27/2016 1:28:27 PM 深入理解gradle编译-Android基础篇 导读 Gradle基于Groovy的特定领域语言(DSL)编写的一种自动化建构工具,Groovy作为一种高级语言由Java代码实现,本文将对Gradle一些...

小米墨客
2016/10/12
3.6K
7
Gradle学习(十七)——Ant操作

转载请注明:http://blog.csdn.net/lastsweetop/article/details/79043654 简介 Gradle提供了与Ant的完美集成,你可以在Gradle构建中使用单个Ant任务或者全部由Ant构建。在Gradle的构建脚本里...

lastsweetop
01/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Git GUI Client

Git GUI Client

qwfys
6分钟前
0
0
SpringBoot | 第九章:Mybatis-plus的集成和使用

前言 本章节开始介绍数据访问方面的相关知识点。对于后端开发者而言,和数据库打交道是每天都在进行的,所以一个好用的ORM框架是很有必要的。目前,绝大部分公司都选择MyBatis框架作为底层数...

oKong
10分钟前
2
0
win10 上安装解压版mysql

1.效果 2. 下载MySQL 压缩版 下载地址: https://downloads.mysql.com/archives/community/ 3. 配置 3.1 将下载的文件解压到合适的位置 我最终将myql文件 放在:D:\develop\mysql 最终放的位...

Lucky_Me
16分钟前
1
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

问题终结者
30分钟前
1
0
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令

expect脚本同步文件 在一台机器上把文件同步到多台机器上 自动同步文件 #!/usr/bin/expectset passwd "123456"spawn rsync -av root@192.168.133.132:/tmp/12.txt /tmp/expect {"yes...

lyy549745
31分钟前
0
0
36.rsync下 日志 screen

10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 screen工具 10.32/10.33 rsync通过服务同步: rsync还可以通过服务的方式同步。那需要开启一个服务,他的架构是cs架构,客户端服务...

王鑫linux
39分钟前
0
0
matplotlib 保存图片时的参数

简单绘图 import matplotlib.pyplot as pltplt.plot(range(10)) 保存为csv格式,放大后依然很清晰 plt.savefig('t1.svg') 普通保存放大后会有点模糊文件大小20多k plt.savefig('t5.p...

阿豪boy
43分钟前
1
0
java 8 复合Lambda 表达式

comparator 比较器复合 //排序Comparator.comparing(Apple::getWeight);List<Apple> list = Stream.of(new Apple(1, "a"), new Apple(2, "b"), new Apple(3, "c")) .collect(......

Canaan_
昨天
0
0
nginx负载均衡

一、nginx 负载均衡 拓扑图: 主机信息: 1、负载均衡器1(lb1):192.168.10.205 RHEL7.5 2、负载均衡器2(lb2):192.168.10.206 RHEL7.5 3、web服务器1(web01):192.168.10.207 Centos...

人在艹木中
昨天
0
0
做了一个小网站

做了一个小网站 www.kanxs123.com

叶落花开
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部