使用ant和ivy的可执行jar类路径问题

使用ant和ivy的可执行jar类路径问题,ant,ivy,manifest.mf,Ant,Ivy,Manifest.mf,我正试图用ivy管理的ant构建一个可执行的jar文件,但我被卡住了。我们最初的构建脚本或多或少地组装了jar文件。依赖项位于manifest.mf中,但不在类路径下,而是在编译类路径条目下 我可以简单地在menifest文件中设置主类条目,但是在尝试获取类路径中的ivy依赖项时,我遇到了一个不可能的敌人。虽然使用gradle看起来很简单,但我找不到任何解决常春藤依赖性的方法 有没有办法获取resolves ivy依赖项并将其放入清单中?这些依赖关系只是指向jar文件所在的网络位置的路径。我给出

我正试图用ivy管理的ant构建一个可执行的jar文件,但我被卡住了。我们最初的构建脚本或多或少地组装了jar文件。依赖项位于manifest.mf中,但不在类路径下,而是在编译类路径条目下

我可以简单地在menifest文件中设置主类条目,但是在尝试获取类路径中的ivy依赖项时,我遇到了一个不可能的敌人。虽然使用gradle看起来很简单,但我找不到任何解决常春藤依赖性的方法


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

我给出了一种标准方法。如果您可以提供您的实际构建文件,我可以在回答中更具体一些

您可以在ant目标中创建jar。例如:

<!-- 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>

...

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

您可以在ant目标中创建jar。例如:

<!-- 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解决,我不打算全部输入。你不必声明每个jar。可以通过多种方式创建路径变量。一种方法是使用常春藤缓存。这可以通过声明类似于
的内容来实现。这将创建一个在“运行时”下解析所有JAR的路径另一种方法是使用
@smoothd9创建一个带有child的路径,如何在下一个构建中重用cachepath变量,而不必再次运行缓慢的
cachepath
任务?是的,我知道很多,但我感兴趣的部分是:我如何能够自动做到这一点?我们有几百个可传递的依赖项由ivy解决,我不打算全部输入。你不必声明每个jar。可以通过多种方式创建路径变量。一种方法是使用常春藤缓存。这可以通过声明类似于
的内容来实现。这将创建一个在“运行时”配置下解析所有JAR的路径。另一种方法是使用
@smoothd9创建一个具有子级的路径。如何在下一个构建中重用cachepath变量,而不必再次运行慢速
cachepath
任务?