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

用ant创建一个捆绑罐

越扬
2023-03-14
问题内容

我正在使用Ant构建一些Java项目。在某些情况下,我有一个lib/目录,该目录包含JAR文件形式的外部依赖项。

在构建过程中,我通过将目录中zipfileset每个jar的a添加到bundlejar文件中,创建了一个捆绑jar,其中包含项目代码以及相关性lib/。

问题是,每次添加一个jar或更改名称时,我都需要记住要更新build.xml文,因为我找不到zipfilesets一种自动添加方式的方式,该方式将以某种特定模式包含所有jar(例如lib/*.jar)。

有更好的方法吗?

我考虑过为此编写自己的Ant任务,或者使用Groovy的antAPI以编程方式进行此操作,但是我想知道是否存在使用“香草”蚂蚁进行此操作的方法。


问题答案:

在我的目标中,我有这样的东西:

<jar destfile="${store.dir}/temp_final.jar" filesetmanifest="skip">
    <zipgroupfileset dir="dist" includes="*.jar"/>
    <zipgroupfileset dir="dist/lib" includes="*.jar" excludes=""/>

    <manifest>
        <attribute name="Main-Class" value="${main.class}"/>
        <attribute name="Class-Path" value="${mf.classpath}"/>
    </manifest>
</jar>

这是我如何构建我的类路径:

<path id="build.classpath">
    <fileset dir="${basedir}/">
        <include name="${lib.dir}/*.jar"/>
    </fileset>
</path>

<pathconvert property="mf.classpath" pathsep=" ">
    <path refid="build.classpath"/>
    <mapper>
        <chainedmapper>
            <flattenmapper/>
            <globmapper from="*.jar" to="lib/*.jar"/>
        </chainedmapper>
    </mapper>
</pathconvert>

从上面发布的包目标中使用mf.classpath。这部分是我从其他地方复制的,所以我并不那么熟悉。

快速编辑。Javac也需要了解这些jar。

<path id="jars">
    <fileset dir="${lib.dir}" includes="**/*.jar"/>
</path>

<target name="compile">
    <mkdir dir="${build.dir}"/>
    <javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="jars" debug="on"/>
</target>


 类似资料:
  • 我目前正在创建一个时间线卡片,方式如下: 这将在时间线中创建一张活卡。我尝试添加另一个相同的标签,以为它会把他们捆绑在一起,最近的将是捆绑封面卡,但它没有做到这一点。 我看了一下文档,我能找到的只是如何使用镜像API来实现它。那么有没有一种方法可以使用GDK创建捆绑卡呢?还是只有通过镜像API才可用?多谢了。

  • 问题内容: 我想在Symfony中启动一个新的3.3项目,并像往常一样开始: 1.)创建新项目: 2.)创建一个新的捆绑包:(Paul / ArtBundle,yml,src /) 然后我运行本地服务器,当我打开127.0.0.1:8000时,我得到了一条漂亮的消息: (1/1)ClassNotFoundException 尝试从命名空间“ Paul \ ArtBundle”加载类“ PaulAr

  • 我正在努力与java应用程序的交付。我用Eclupse Luna编写了它,并设法导出了一个带有外部文件(图像)的jar。因此,现在我有一个来自Eclipse的ant build xml文件,我可以运行,并且我可以双击jar文件以执行它,只有在复制了所有外部映像的数据文件之后。 现在我想创建一个Mac包,这样一个有图标的project.app可以添加到Dock中,并且可以在其中包含java jdk(

  • 问题内容: 我正在尝试将webpack中的每个角度模块捆绑在一起。我的目标是拥有一个app.js,它将通过以下配置与webpack捆绑在一起: 我将这个捆绑脚本放到我的index.html中,这样它将成为我应用程序的入口。我的文件夹中也有很多模块。文件夹结构如下: 我已要求这样做,所以当我加载其所有需要的文件时,都将加载。问题是我有几个类似的组件,我想告诉webpack分别捆绑每个组件,并用其包含

  • 问题内容: 如何从jar库创建OSGi捆绑包? 问题答案: 如果您使用的是eclipse:有一个向导。 它允许您选择许多jar库,并创建一个包含这些jar的插件项目(即OSGi捆绑包)。 你可以在这里找到它:

  • 我直接从android网站为我的mac下载了ADT捆绑包。一切都很好,直到我创建了一个新项目,eclipse创建了我的项目以及一个名为“appcompat_v7”的文件夹。 但我不这样做,因为这样我就不能遵循教程,因为你不能扩展一个方法超过一次,例如: 我能做什么?我不能遵循任何教程。我正在尝试这个(https://www.youtube.com/watch?v=E780gbh6vLU),但我不能