所以我一直在编写一些Jython代码。我一直在使用最新版本的Eclipse IDE和PyDev插件进行开发。到目前为止,事情已经适度容忍。我已经完成了所有Python脚本的工作,并且我成功地将一些JAR文件和另一个Java项目的类目录作为外部依赖项包含在内。通过Eclipse IDE,一切似乎都运行良好。
现在我需要打包并部署它。从我可以收集到的,最好的方法是将所有内容打包在一个JAR文件中。 Jython文档建议从jython.jar文件开始并添加到它。好。所以我修改了我的主python模块并开始将我的所有python源添加到JAR。
它执行但当然找不到所有外部依赖项。
如何添加外部JAR文件,以便Jython解释器正确看到它们?如何在这样的设置中管理更复杂的依赖?
是否有Eclipse的插件或者像Ant或Maven这样的插件可以通过按下按钮来处理所有这些步骤?
我不能成为第一个需要部署具有复杂依赖关系的Jython代码的人吗?
答案 0 :(得分:3)
我已经取得了一些进展,因为我认为我会在这里做一些笔记,以防他们帮助其他人。我还是想听听别人的经历,试图把这样的东西拼凑起来。
事实证明Eclipse中的Eclipse有一个Java项目导出选项 - > Runnable JAR文件。如果使用此选项,则可以在导出向导中指向Java主类。您还可以选择在新的JAR文件中重新打包所依赖的所有JAR。确保选中该框以将导出保存为ANT版本,以便您可以快速重复此过程。请注意,第一次通过界面执行此操作时,它可能会失败,但它仍会创建一个JAR文件。
现在这里变得奇怪了。为了跟踪所有依赖项,我仍在我的项目中使用一个大部分不完整的Maven构建。我创建了Maven .POM文件。我告诉Maven我的外部JAR依赖是什么。然后我告诉Maven为我做一个依赖更新。它按预期将所有内容放入我的Maven存储库。
现在,当我进行ANT构建时,它似乎正在将其JAR列表包含在Maven的最终构建中。我不确定它是否应该以这种方式工作。我也不是100%确定它有效。我想我什么时候需要在项目中添加另一个外部JAR。
无论如何,如果你遵循这个question,你会看到你可以使用最新版本的Jython并将org.python.util.JarRunner.java文件拉出来并在你自己的项目中使用它。这是您需要指向ANT构建的Java.main类。从那里,将您的主要Python / Jython脚本转换为该问题中讨论的 run 脚本。
接下来,在Jython目录中构建Jython JAR文件的另一个副本。这个应该将/ Lib目录拉入JAR。保存它,然后将该JAR上的PyDev项目的Eclipse IDE Jave Build选项指向外部依赖项。您的JarRunner现在将在Jython下运行并执行运行 .py文件。
如果一切正常,那么您应该能够从之前重新运行ANT导出的构建,并且最终会得到一个可以在命令行上执行的JAR文件:
java -jar {yourjar} args
并在没有任何其他依赖关系的情况下分发给您的客户。
如果这一切看起来有点复杂,那就是。如果有人有更好的方法使用Eclipse设置这一切,请告诉我。
答案 1 :(得分:0)
让您的生活更轻松,只需使用Maven和mavenjython编译插件。
请参阅我对此问题的回答:Using Jython with Maven
您可以完全自动化构建和部署过程,结果是一个包含jython和所有其他依赖项的jar。