使用 ant 和 ivy 的可执行 jar - CLASSPATH 问题

executable jar using ant and ivy - CLASSPATH issues

我正在尝试使用由 ivy 管理的 ant 构建可执行 jar 文件,但卡住了。我们原来的构建脚本或多或少地组装了 jar 文件。依赖项位于 manifest.mf 但不在 Class-Path 下,而是在 Compile-Class-Path 条目下。

我可以简单地在 menifest 文件中设置 Main-Class 条目,但是在尝试获取 Class-Path 中的 ivy 依赖项时遇到了不可能的敌人。虽然使用 gradle 这看起来很简单,但我找不到 ivy 依赖项的任何解决方案。

有没有办法获取解析的 ivy 依赖项并将它们放入清单中?这些依赖项只是指向 jar 文件所在的网络位置的路径。

我给出了一个标准的方法来做到这一点。如果您可以提供您的实际构建文件,我可以在答案中更具体。

您可以在用于创建 jar 的 ant 目标中执行此操作。例如:

<!-- create a classpath variable with all the jars needed for runtime -->
<path id="cls.path">
   <!-- declare all the paths that you need. For ex: all resolved jars in "runtime" conf --> 
</path>
<!-- If your path has folder prefix, you'll have to do <pathconvert> -->
<jar jarfile="${jar_name}" basedir="${classes.dir}">
   <manifest>
      <attribute name="Class-Path" value="${cls.path}"/>
      ...
      <!-- You can add standard jar properties and any custom property here -->
   </manifest>
</jar>