我刚刚构建了一个使用Python模块导入和一些Java jar的Jython项目。在我自己的计算机上,因为我只是想完成这件事,我通过硬编码sys.path并安装我想要的每个模块和jar,以非常黑客的方式工作。这绝对不是我想要发布版本的东西。我已经读过能够将所有内容打包到一个独立的Jython jar中,这对我来说听起来不错。我有什么理由不这样做吗?如果没有,有没有人可以指点我的最佳方法指南?我正在通过PIG运行整个事情,所以拥有一个可调用的Jython jar是理想的。
我知道在SO上已经存在一些类似的问题,但这些问题的答案看起来很旧,而且给出的文档(例如MavenJython)非常差。我已经查看了MavenJython和Jip,但我无法在两者之间做出真正的决定,而且我也没有找到足够的信息。这个问题的理想答案我应该使用什么,为什么要使用它,并简要介绍一下如何使用它。任何一个链接也很棒。
谢谢!
答案 0 :(得分:0)
请详细说明如何改进MavenJython文档。事情自2011年以来没有改变(你可能have seen this answer),这不是很久以前的事了。有网站,但作为程序员,你可能只想阅读jython-compile-maven-plugin-test项目的源代码,这只是200行代码。最好将此软件包用作您自己项目的起点。
Java软件分发(和Windows软件分发)通常的工作方式是您打包所需的一切。所以,是的,一个独立的Jython jar是合适的。缺点是每个软件都可能使用不同的Jython版本,好处是这可能是您想要的(更新可能会破坏事物)。这也是MavenJython方法,将所有内容打包成正确的版本。
Python和Linux软件发行版只安装软件包,在安装时检查兼容性。这是jip方法,假设您已经拥有Jython,安装软件的任何人都可以通过安装正确的版本来解决兼容性问题。
我不能说jip,我没有用过它。从我在演示中看到的内容,jip旨在为Python包提供对Maven Java库的访问。它似乎也能够从Jython代码生成maven包。所以你可以使用MavenJython或jip来实现你的目标。试试吧。
使用MavenJython构建的可交付成果分发Jython,而jip不发布。
要通过pig运行jython,安装jython并将jython源放在路径中就足够了 - 请参阅embed python section of the pig manual。 jip可以适合在本地安装jython包,但如果您只想运行代码则不需要。如果你想分发使用pig的软件,并在客户端计算机上安装pig,jython和你的代码,MavenJython可以为你做到这一点。