相关疑难解决方法(0)

如何使用Ant将文件复制到现有JAR中?

我有一个项目需要访问自己的JAR文件中的资源.当我为项目创建JAR文件时,我想将一个目录复制到该JAR文件中(我想ZIP相当于将目录"添加"到现有的ZIP文件中).我只希望在创建JAR之后发生复制(如果我清理并删除JAR文件,我显然不希望复制发生).

目前构建文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<project name="foobar" basedir=".." default="jar">

    <!-- project-specific properties -->
    <property name="project.path" value="my/project/dir/foobar" />

    <patternset id="project.include">
        <include name="${project.path}/**" />
    </patternset>
    <patternset id="project.jar.include">
        <include name="${project.path}/**" />
    </patternset>

    <import file="common-tasks.xml" />

    <property name="jar.file" location="${test.dir}/foobar.jar" />    
    <property name="manifest.file" location="misc/foobar.manifest" />
</project>
Run Code Online (Sandbox Code Playgroud)

一些构建任务是从另一个文件(common-tasks.xml)调用的,我无法在此处显示.

ant jar

20
推荐指数
2
解决办法
3万
查看次数

ant:jar和zipfileset - 将文件从一个JAR复制到另一个JAR

我目前正在这样做:

<jar update="yes"
     jarfile="${pwd}/dist/${release}_installer.jar">
   <zipfileset src="${pwd}/dist/app.jar" includes="com/izforge/izpack/panels/**"/>
   <zipfileset src="${pwd}/dist/app.jar" includes="com/xyz/img/logo.png"/>
</jar>
Run Code Online (Sandbox Code Playgroud)

我的现有安装程序JAR已更新,以根据需要包含从应用程序JAR中提取的文件.

到现在为止还挺好.

但是,我想修改行为,使图像文件的路径不同于从中复制的路径:

目前:

com/izforge/izpack/panels/MyIzPanel.class
com/xyz/img/logo.png
Run Code Online (Sandbox Code Playgroud)

我想要的是:

com/izforge/izpack/panels/MyIzPanel.class
blah/img/logo.png
Run Code Online (Sandbox Code Playgroud)

所以我需要复制文件,但使用<zipfileset><jar>以这种方式我可以修改目录结构.

有没有办法做到这一点,除了解压缩整个内容复制文件,然后再次拉回来?


编辑:

链接到之前的相关问题:ant任务从jar中删除文件

java ant zip jar build

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

ant ×2

jar ×2

build ×1

java ×1

zip ×1