在 Gradle 脚本中处理Manifest: ClassPath
来源:互联网 发布:淘宝最常见韩国模特 编辑:程序博客网 时间:2024/05/18 16:58
运行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好蠢,发布按钮居然要点开菜单才能看到?
- 在 Gradle 脚本中处理Manifest: ClassPath
- 用Ant打Jar包--在Manifest中引用Classpath
- gradle中classpath具体路径
- 用Ant打Jar包--在Manifest中引用Classpath(转载)
- (转)用Ant打jar包--在manifest中引用classpath
- gradle批量打包Android apk(绪):在manifest中替换activity、service等组件,批量打包不同功能的apk。
- 在Shell脚本中处理命令行参数
- trap命令--在脚本中处理信号
- Linux trap --在脚本中处理信号
- 在 classpath 中扫描组件
- 解决Android Studio:一直处于Gradle:Reslove dependencies ':classpath'中
- 在web.xml中classpath和classpath*的区别
- 在web.xml中classpath和classpath*的区别
- 在web.xml中classpath和classpath*的区别
- 在web.xml中classpath和classpath*的区别
- 在web.xml中classpath和classpath*的区别
- 在web.xml中classpath和classpath*的区别
- 在web.xml中classpath和classpath*的区别
- vc++ 菜单处理
- shell值班问题。
- C++ 工程实践(2):不要重载全局 ::operator new()
- 光源选型二(光源颜色组合、滤光及波长特性)
- Zen cart 加载流程
- 在 Gradle 脚本中处理Manifest: ClassPath
- DEDECMS 网站迁移教你一招
- spring的aop
- spring中的ioc
- 学习笔记8—JAVA高级视频01_JavaAPI
- Cheatable XML task in SSIS
- empty remove 区别
- SQL面试基本题:delete,truncate,drop 区别
- 企业项目管理的组织形式分类