Java 从Eclipse打包和部署Jython程序

Java 从Eclipse打包和部署Jython程序,java,eclipse,build-process,jython,Java,Eclipse,Build Process,Jython,所以我一直埋头于写一些Jython代码。我一直在使用最新版本的EclipseIDE和PyDev插件进行开发。到目前为止,情况还算可以容忍。我已经让我所有的Python脚本都正常工作了,并且成功地将两个JAR文件和另一个Java项目的类目录作为外部依赖项包含在内。通过EclipseIDE,一切似乎都运行良好 现在我需要打包所有东西并部署它。据我所知,最好的方法是将所有内容打包到一个JAR文件中。Jython文档建议从Jython.jar文件开始并添加到其中。好啊因此,我修改了我的主python模块

所以我一直埋头于写一些Jython代码。我一直在使用最新版本的EclipseIDE和PyDev插件进行开发。到目前为止,情况还算可以容忍。我已经让我所有的Python脚本都正常工作了,并且成功地将两个JAR文件和另一个Java项目的类目录作为外部依赖项包含在内。通过EclipseIDE,一切似乎都运行良好

现在我需要打包所有东西并部署它。据我所知,最好的方法是将所有内容打包到一个JAR文件中。Jython文档建议从Jython.jar文件开始并添加到其中。好啊因此,我修改了我的主python模块,并开始将所有python源代码添加到JAR中

它执行,但当然找不到所有的外部依赖项

如何添加外部JAR文件,以便Jython解释器能够正确地看到它们?在这样的设置中,如何管理更复杂的依赖关系

有没有Eclipse插件,或者像Ant或Maven这样的插件,只需按下一个按钮就可以为我处理所有这些步骤


我不可能是第一个需要部署具有复杂依赖关系的Jython代码的人,可以吗?

我在这方面已经取得了一些进展,所以我想在这里写一些注释,以防它们帮助其他人。我仍然想听听其他人的经验,他们试图把这样的东西放在一起

事实证明,从3.5开始,Eclipse在Java->Runnable JAR文件中有一个项目导出选项。如果使用此选项,可以在导出向导中指向Java主类。您还可以选择让它重新打包新JAR文件中依赖的所有JAR。确保选中该复选框以将导出保存为ANT构建,以便可以快速重复该过程。请注意,第一次通过接口执行此操作时,它可能会失败,但它仍然会创建一个JAR文件

现在这里是它变得奇怪的地方。为了跟踪所有的依赖关系,我仍然在我的项目中使用一个几乎不完整的Maven构建。我创建了Maven.POM文件。我告诉Maven我的外部JAR依赖是什么。然后我告诉Maven为我做一个依赖项更新。它像预期的那样将所有内容都拉到了我的Maven存储库中

现在,当我进行ANT构建时,它似乎正在从Maven获得要包含在最终构建中的JAR列表。我不确定它是否应该这样工作。我也不是100%确定它是否有效。我想我会发现什么时候我必须向项目中添加另一个外部JAR

无论如何,如果您遵循这一点,您将看到您可以获取Jython的最新版本,并提取org.python.util.JarRunner.java文件,并在您自己的项目中使用它。这是您需要将ANT构建指向的Java.main类。从这里开始,将主Python/Jython脚本转换为该问题中讨论的运行脚本

接下来,在Jython目录中构建Jython JAR文件的另一个副本。这一个应该将/Lib目录拉入JAR。保存该选项,然后将PyDev项目的EclipseIDEJAVE构建选项作为外部依赖项指向该JAR。您的JarRunner现在将工作并在Jython下执行run.py文件

如果所有这些都有效,那么您应该能够重新运行ANT从早期导出的构建,最终将得到一个JAR文件,您可以在命令行上执行该文件,如下所示:

java-jar{yourjar}args

并分发给您的客户,无需任何其他依赖项


如果这一切看起来有点复杂,那就是。如果有人有更好的方法使用Eclipse进行设置,请告诉我。

让您的生活更轻松,只需使用Maven和compile插件即可

见我对这个问题的回答:

您可以实现构建和部署过程的完全自动化,结果是一个包含jython和所有其他依赖项的jar