2017-10-13 100 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