在 MANIFEST 类路径中构建带有 lib 的 jar



我目前有以下内容来构建我的罐子:

 <jar jarfile="${bin.dir}/${name}.jar" basedir="${build.src.dir}">
            <zipfileset src="${bin.lib.dir}/dependencies-compact.jar"
                        excludes="META-INF/*.SF" />
  </jar>

但这会使罐子里的所有东西都乱七八糟。 计划现在在罐子里,会有一个名为 lib 的文件夹和 MANIFEST。MF 的类路径变量将使用 lib 文件夹中所有 jar 的列表进行更新。 如何在蚂蚁身上实现这一点?

清单中的类路径是指外部 jar,而不是您在 jar 文件中提取的类。

以下是我如何使用 ivy 将 jar 的依赖项放入相邻的"lib"目录,然后使用 ANT manifestclasspath 任务构造进入 jar 清单的字符串的示例:

  <target name="build" depends="compile">
    <ivy:retrieve pattern="${dist.dir}/lib/[artifact].[ext]"/>
    <manifestclasspath property="jar.classpath" jarfile="${dist.jar}">
      <classpath>
        <fileset dir="${dist.dir}/lib" includes="*.jar"/>
      </classpath>
    </manifestclasspath>
    <jar destfile="${dist.jar}" basedir="${build.dir}/classes">
      <manifest>
        <attribute name="Main-Class" value="${dist.main.class}"/>
        <attribute name="Class-Path" value="${jar.classpath}"/>
      </manifest>
    </jar>
  </target>

有关包含 ivy 文件和单元测试的更详细示例,请参阅:

  • 如何避免使用 Ivy 复制依赖项
  • 在 Ant、Ivy 和 JUnit 中找不到类 - 构建.xml错误?

相关内容

  • 没有找到相关文章

最新更新