使用 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>
我正在尝试使用由 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>