2017-10-13 213 views
0

我试图建立一个可执行的jar文件使用蚂蚁管理的常春藤,但我卡住了。我们的原始构建脚本或多或少地组装jar文件。依赖关系在manifest.mf中,但不在Class-Path下,而是在Compile-Class-Path条目下。使用蚂蚁和常春藤的可执行jar - CLASSPATH问题

我可以简单地在清单文件中设置Main-Class条目,但在尝试获取Class-Path中的常青藤依赖关系时遇到了不可能的敌人。虽然这似乎很简单,使用gradle我找不到任何解决方案的常春藤依赖。

有没有办法获得解决常春藤依赖关系,并把它们放在清单中?这些依赖关系只是到达jar文件所在网络位置的路径。

回答

0

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

你可以在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> 
+0

嗯,我知道的很多,但我感兴趣的部分是:<! - 声明所有你需要的路径。例如:“运行时”conf中的所有已解决的jar - > 我该如何自动执行此操作?我们有几百个传递依赖关系由ivy解决,我不打算全部输入。 –

+0

您不必声明每个jar。您可以通过多种方式创建路径变量。一种方法是使用常青藤缓存。这可以通过声明类似'''来完成。这将创建一个路径,在“运行时”配置下解析所有瓶子。另一种方法是使用'''创建一个带有孩子的路径。 – smoothed9