2010-05-13 58 views
3

因此,我一直在努力編寫一些Jython代碼。我一直在使用最新版本的Eclipse IDE與PyDev插件進行開發。到目前爲止,事情已經適度地容忍了。我已經完成了所有Python腳本的工作,並且成功地將幾個JAR文件和另一個Java項目的類目錄包含爲外部依賴項。通過Eclipse IDE一切似乎都運行良好。從Eclipse打包和部署Jython程序

現在我需要將所有東西打包並部署。從我可以收集的信息來看,最好的方法是將所有東西打包到一個JAR文件中。 Jython文檔建議從jython.jar文件開始並添加它。好。所以我修改我的主python模塊並開始將所有的python源文件添加到JAR中。

它執行但當然無法找到所有的外部依賴關係。

如何添加外部JAR文件,以便它們被Jython解釋器正確看到?人們應該如何在像這樣的設置中管理更復雜的依賴關係?

是否有Eclipse的插件,或者像Ant或Maven這樣的插件可以通過按下按鈕來處理所有這些步驟?

我不能成爲第一個需要用複雜的依賴關係部署Jython代碼的人嗎?

回答

3

我已經取得了一些進展,所以我想我會在這裏寫一些筆記,以防他們幫助別人。我仍然希望聽到別人的經驗,試圖將這樣的東西放在一起。

事實證明,從3.5開始的Eclipse具有用於Java-> Runnable JAR文件的項目導出選項。如果使用此選項,則可以在導出嚮導中指向Java主類。您也可以選擇將其依賴的所有JAR重新打包到新的JAR文件中。確保選中該框以將導出保存爲ANT版本,以便您可以快速重複該過程。請注意,第一次通過界面執行此操作時,可能會失敗,但它仍會創建JAR文件。

現在,這裏是它變得奇怪。爲了跟蹤所有的依賴關係,我仍然在我的項目中使用大部分不完整的Maven構建。我創建了Maven .POM文件。我告訴Maven我的外部JAR依賴是什麼。然後我告訴Maven爲我做一個依賴更新。它按預期將所有內容都拉到我的Maven存儲庫中。

現在,當我執行ANT構建時,看起來它正在從Maven的最終構建中獲取要包含的JAR列表。我不確定它是否應該以這種方式工作。我也不是100%確定它正在工作。我想我會發現什麼時候需要將另一個外部JAR添加到項目中。

無論如何,如果你關注這個question,你會發現你可以使用Jython的最新版本,並將org.python.util.JarRunner.java文件拖出並在你自己的項目中使用它。這是你需要指定你的ANT構建的Java.main類。從那裏,將您的主Python/Jython腳本轉換爲在該問題中討論的運行腳本。

接下來,在您的Jython目錄中構建Jython JAR文件的另一個副本。這個應該把/ Lib目錄拉到JAR中。保存,然後將你的PyDev項目的Eclipse IDE Jave Build選項指向該JAR作爲外部依賴項。您的JarRunner現在將在Jython下運行並執行運行 .py文件。

如果一切正常,你應該然後能夠從早期重新運行ANT出口建立和你最終會與您可以在命令行上執行一個JAR文件:

Java的罐子{ yourjar} args

並分發給您的客戶,沒有任何額外的依賴關係。

如果這一切似乎有點複雜,它是。如果有人有更好的方式使用Eclipse設置這一切,請讓我知道。

0

讓您的生活更輕鬆,只需使用Maven和mavenjython編譯插件即可。

見我這個問題的答案:Using Jython with Maven

你得到構建的全自動化和部署的過程,其結果是一個罐子,其中包括Jython和所有其他依賴。