【问题标题】:ant - build jar with lib inside and in MANIFEST classpathant - 在里面和 MANIFEST 类路径中构建带有 lib 的 jar
【发布时间】:2017-08-13 00:27:50
【问题描述】:

我目前有以下用于构建我的 jar:

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

但这会让罐子里的一切变得混乱。现在计划在 jar 中,会有一个名为 lib 的文件夹,并且 MANIFEST.MF 的类路径变量将更新为 lib 文件夹中所有 jar 的列表。如何在 ant 上实现这一点?

【问题讨论】:

    标签: jar ant manifest ivy


    【解决方案1】:

    Manifest 中的类路径指的是外部 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 文件和单元测试的更详细示例,请参阅:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-23
      • 2012-05-31
      • 2017-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-25
      • 2019-06-27
      相关资源
      最近更新 更多