【转载】复制文件到已存在的Jar
复制文件到已存在的Jar
技术标签: Ant OSGI Eclipse 脚本 配置管理
问题
这两天在写一个小东西。这个小东西是一个大东西的一部分。其实也就是其中的一两个类。而这个大东西需要部署到一个特定的环境中去运行。所以有一堆的限制条 件,比如什么配置文件啊,包名,版本之类的什么东西。稍微有点差错就没有办法运行。需要正确得到这些东西需要一个很庞大且冗长的构建过程。而我写的也就是 两三个类,所以最直接的方式就是把我写的java 文件编译或的class 文件直接复制到jar文件中。 完成这样工作有好几中方式,最直接的方式就是纯手工打造

PS: 这种方式费时费力,需要在不同的窗体间进行切换。例如我现在就在Eclipse、WinRaR和Windows资源管理器间切换。
解决过程
如何避免这个过程呢,尽量不用人来参与其中。这个肯定就是让一个小程序来把这几个动作连接起来。而且还要能够方便变动。比如我现在不想往a.jar 里面copy了。我想向b.jar 中复制了。所以就想到了脚本。对让脚本来完成这样的事情。第一反应想到的是ant
Ant 我的主角
Ant 是 何须人,就不用我多说了。其实我了解也不多,只是知道这个小蚂蚁蛮力超大。下面就着手解决问题。第一反应就是找到一个直接copy的任务,把 fileset中的文件复制到jar文件中。但是遗憾的是我没有能够找到这样一个Task.这个时候我的思维陷入了困境。下面该怎么办?
困境
没有现成的东西,没有现成的能一步完成的东西?如何是好? 我是程序员,所以我我自己可以写一个task来满足这样的需求啊。对啊,我可以自己写的!正当我为这个想法兴奋不已时,正卷起袖子准备“大干”的时候。突然想起某人说过 不要重新造轮子! 。所以就追问了我自己一句:拐 角处会有什么呢?
我的拐角
既然Ant有蛮力,我可否利用一下他的蛮力呢?通过如下的这么一个流程来达到我的目的。

这里用了一个temp文件夹作为中转,先解压,copy需要的文件,最后jar一下获得最后的更新好的jar。 最终获得了如下的build.xml
<target name="prepare">
<mkdir dir="${temp_dir}"/>
</target> <target name="build" depends="prepare">
<echo message="unzip">Uzip Jar file</echo>
<unjar dest="${temp_dir}" src="${comp_plugin}/${contain_plugin}">
</unjar>
<copy todir="${temp_dir}">
<fileset dir="./bin"> </fileset>
</copy>
<jar update="true"
destfile="c:/${contain_plugin}"
basedir="${temp_dir}" >
</jar>
</target>
调整的过程
看上去,所有问题都解决了。但是偏偏在使用的时候遇到了小问题。我的jar包是要在osgi环境下工作的。所以特别依赖MANIFEST.MF文件。偏偏jar 这个任务默认情况下会生成一个默认的MANIFEST.MF文件。如果任由他胡来的话,就全虾米了。所以要稍微调整一下。
<jar update="true"
destfile="c:/${contain_plugin}"
basedir="${temp_dir}"
manifest="${temp_dir}/META-INF/MANIFEST.MF">
</jar>
这样就可以了。大功告成!!
【转载】复制文件到已存在的Jar的更多相关文章
- 转载 python文件复制的方法
Python复制文件的9种方法 51Testing软件测试网 17-11-1614:13 以下是演示"如何在Python中复制文件"的九种方法. 1.shutil copyfile ...
- JAVA实现复制文件夹
package com.filetest; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; impor ...
- Java 复制文件的高效方法
转载自:http://jingyan.baidu.com/article/ff4116259c2d7712e4823780.html 在Java编程中,复制文件的方法有很多,而且经常要用到.我以前一直 ...
- Web 在线文件管理器学习笔记与总结(17)复制文件 (18)剪切文件
(17)复制文件 ① 复制文件通过copy($src,$dst) 来实现 ② 检测目标目录是否存在,如果存在则继续检测目标目录中是否存在同名文件,如果不存在则复制成功 file.func.php 中添 ...
- [shell实例]——用脚本实现向多台服务器批量复制文件(nmap、scp)
练习环境: (1)所有服务器将防火墙和selinux关闭 (2)所有服务器的root密码设置为aixocm (3)所有服务器都为10.0.100.*网段,并保证能够和其它主机通信 (4)所有服务器确保 ...
- 【windows核心编程】IO完成端口(IOCP)复制文件小例前简单说明
1.关于IOCP IOCP即IO完成端口,是一种高伸缩高效率的异步IO方式,一个设备或文件与一个IO完成端口相关联,当文件或设备的异步IO操作完成的时候,去IO完成端口的[完成队列]取一项,根据完成键 ...
- ASP FSO操作文件(复制文件、重命名文件、删除文件、替换字符串)
ASP FSO操作文件(复制文件.重命名文件.删除文件.替换字符串)FSO的意思是FileSystemObject,即文件系统对象.FSO对象模型包含在Scripting 类型库 (Scrrun.Dl ...
- linux使用su切换用户提示 Authentication failure的解决方法& 复制文件时,报cp: omitting directory `XXX'
linux使用su切换用户提示 Authentication failure的解决方法:这个问题产生的原因是由于ubtun系统默认是没有激活root用户的,需要我们手工进行操作,在命令行界面下,或者在 ...
- (转)每天一个linux命令(8):cp 命令,复制文件和文件夹
场景:自动部署脚本中为了部署方便,将配置文件放在服务器端,每次部署都使用服务端的配置文件覆盖上传上去的配置文件. cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一. 一般情况下,she ...
随机推荐
- 第20 章 : GPU 管理和 Device Plugin 工作机制
GPU 管理和 Device Plugin 工作机制 本文将主要分享以下几个方面的内容: 需求来源 GPU 的容器化 Kubernetes 的 GPU 管理 工作原理 课后思考与实践 需求来源 201 ...
- 我成为 Microsofti Azure MVP 啦!(ps:不是美国职业篮球)
一,引言 今天是个高兴的日子,早上10点左右收到了来自微软的MVP的礼包的快递,对我来说,这是一件很值得纪念的日子.所以今天就水一篇心得感想吧!!! 我是年前2月9号开始申请MVP的,经历了差不多1个 ...
- (六)Struts2的拦截器
一.简介 拦截器体系是struts2重要的组成部分.正是大量的内建拦截器完成了该框架的大部分操作. 比如params拦截器将请求参数解析出来,设置Action的属性.servletConfig拦截器负 ...
- C语言-字符串函数的实现(一)之strlen
C语言中的字符串函数有如下这些 获取字符串长度 strlen 长度不受限制的字符串函数 strcpy strcat strcmp 长度受限制的字符串函数 strncpy strncat strncmp ...
- Linux 用户和用户组管理(useradd userdel groupadd groupdel)
Linux 用户和用户组管理 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统. Linux系统用户账户的 ...
- [解决] Assertion `srcIndex < srcSelectDimSize` failed.
在finetune Chinese GPT2的时候遇到如上错误,错误原因index越界,原始代码中给定的输入长度是1024,但是我使用模型可接受的输入长度是512,把输入长度都改为512,错误解决
- (十八)VMware Harbor 镜像同步
为什么需要镜像同步 由于对镜像的访问是一个核心的容器概念,在实际使用过程中,一个镜像库可能是不够用的,下例情况下,我们可能会需要部署多个镜像仓库: 国外的公有镜像下载过慢,需要一个中转仓库进行加速 容 ...
- Compound Words UVA - 10391
You are to find all the two-word compound words in a dictionary. A two-word compound word is a wor ...
- .NET6 平台系列3 .NET CLR 详解
系列目录 [已更新最新开发文章,点击查看详细] CLR 简介 运行时(Runtime Environment,简称Runtime ),是指那些支持在特定的平台上,用于运行特定编程语言编写的软件 ...
- 数据结构之Stack | 让我们一块来学习数据结构
栈的介绍 栈就是和列表类似的一种数据结构,它可用来解决计算机世界里的很多问题.栈是一种高 效的数据结构,因为数据只能在栈顶添加或删除,所以这样的操作很快,而且容易实现. 栈的使用遍布程序语言实现的方方 ...