当前位置: 首页 > 面试题库 >

ant任务从jar中删除文件

尚楚
2023-03-14
问题内容

如何编写一个从先前编译的JAR中删除文件的ant任务?

假设我的JAR文件为:

aaa/bbb/ccc/Class1
aaa/bbb/ccc/Class2
aaa/bbb/def/Class3
aaa/bbb/def/Class4

…并且我想要一个没有aaa.bbb.def包的JAR文件版本,我需要使用ant剥离它,以便最终得到一个包含以下内容的JAR:

aaa/bbb/ccc/Class1
aaa/bbb/ccc/Class2

谢谢!


问题答案:

您是否尝试过使用zipfileset任务?

<jar destfile="stripped.jar">
    <zipfileset src="full.jar" excludes="files/to/exclude/**/*.file"/>
</jar>

例如:

<property name="library.dir" value="dist"/>
<property name="library.file" value="YourJavaArchive.jar"/>
<property name="library.path" value="${library.dir}/${library.file}" />
<property name="library.path.new" value="${library.dir}/new-${library.file}"/>

<target name="purge-superfluous">
    <echo>Removing superfluous files from Java archive.</echo>

    <jar destfile="${library.path.new}">
        <zipfileset src="${library.path}" excludes="**/ComicSans.ttf"/>
    </jar>

    <delete file="${library.path}" />
    <move file="${library.path.new}" tofile="${library.path}" />
</target>


 类似资料:
  • 此任务用于删除单个文件,目录或子目录。 还可以通过指定文件集来删除文件集。 默认情况下它不会删除空目录,需要使用属性来删除空目录。 它具有下面列出的各种属性。 1. Apache Ant删除任务属性 属性 描述 必需 要删除的文件 资源(文件,目录) 要删除的目录 资源(文件,目录) 是否显示每个已删除文件的名称 否 如果资源不存在,则不显示任何消息 否 无法删除资源时显示错误 否 也删除空目录

  • 问题内容: 我在构建脚本中使用下面显示的propertyfile任务: 该任务按预期工作,除了每次我构建项目时,Bundle.properties文件的日期注释行都使用当前时间戳更新。即使app.version变量不变,也会导致不必要地提交仅由以下diff组成的版本控制: 如何防止在.properties文件中添加或删除此日期注释?我考虑过在propertyfile嵌套条目元素中进行删除操作,但是

  • 我正在使用Saxon的ANT任务将XSLT应用于XML。以下是我创建的蚂蚁目标: 当XSLT放在项目中的上述文件夹中时,它可以正常工作。但是现在,我需要将XSLT打包为jar的一部分,以便能够将代码分发给第三方客户端。我屏蔽了XSLT,但是现在无法引用它(即使在删除了之后)。在使用Saxon时,是否有不同的方法来引用作为jar一部分的XSLT?

  • 问题内容: 我有一个时间周期性地与一些不同的任务; 我也有Runnable与此计划程序一起使用的不同之处。当我想从调度程序中删除任务之一时,问题就开始了。 有没有办法做到这一点? 我可以使用一个调度程序完成不同的任务吗?实现此目的的最佳方法是什么? 问题答案: 只需取消以下项返回的未来: 要注意的另一件事是,取消不会从计划程序中删除任务。它所确保的是isDone方法总是返回true。如果继续添加此

  • 问题内容: 我试图在一些使用ant脚本的旧项目上进行“干净的专家”设置。我对蚂蚁知之甚少,所以我的问题似乎很幼稚。 我快完成了,但是由于classpath中的冗余,所以传递ant脚本失败了。如果我了解构建,则这些行应将“提供”范围内的每个库添加到类路径中: 然后这个: 将那些依赖项添加到ant.home目录中的库中。 麻烦的是,我使用的maven pom依赖于我无法修改的父pom,因此,我的类路径

  • 我正在尝试编写一个ant目标,它将基于一堆java文件和一些属性文件创建一个jar,但在按照当前项目设置的方式包含属性文件时遇到了问题。 这些是我的蚂蚁目标: 1-从“myjar.src”文件夹编译java源文件,并将生成的类放入“myjar.classes”文件夹。完成后,复制所有非文件。java文件从“myjar.src”到“myjar.classes”。 2-使用basedir=${myja