从Python和CLI启动Java代码,免费安装。

jgo的Python项目详细描述


构建状态

JGO:无痛Java组件执行< /H1>

 src=

摘要

maven是一个很好的工具。它管理依赖关系 Java项目以更健壮的方式成为可重用的"构建块"。 比许多其他语言所提供的要多。以及 maven中央存储库包含一个巨大的 丰富的代码,可以在您自己的项目中重用。

但令人震惊的是,maven并没有提供一种简单的方法来从 精心管理的依赖项存储在~/.m2/repository

<>这个项目填补了这个空白:<代码> JGO < /代码>启动Java代码。你不需要 下载或安装任何jar;只需指定一个由 maven工件标识符,加上 如果需要/需要,以及jgo使用maven获取并运行主类。

安装

有两种实现可供选择!各有利弊。

先决条件

<>代码> JGO 使用<代码> MVN和<代码> Java<代码>。 shell脚本版本需要一些常用的实用程序(例如,cat)。 如果您遗漏了任何内容,脚本将告诉您。

shell脚本

sh shell脚本需要一个posix友好的系统。众所周知 在Linux、MacOS上工作,cygwin,Microsoft的 Windows Linux子系统, 并通过 Git for Windows项目。

安装shell脚本

只需将这个repo和symlinkjgo.sh克隆到您最喜欢的bin目录中即可。

例如,假设~/bin在您的路径上:

cd
git clone https://github.com/scijava/jgo
cd bin
ln -s ../jgo/jgo.sh jgo
jgo --help
<详细内容>

python模块

jgo/jgo.py模块需要python。它提供了一个jgo控制台脚本, 以及用于以编程方式创建端点的jgo模块。

使用PIP安装
pip install jgo
<详细内容>
使用conda安装
conda install -c conda-forge jgo
<详细内容>
从源安装
git clone https://github.com/scijava/jgo
cd jgo

# install globally (not recommended unless using conda or other virtual environment)
pip install .

# install into $HOME/.local (see pip install --help for details)
pip install --user .

# install into $PREFIX
pip install --prefix=$PREFIX .
<详细内容>

用法

Usage: jgo [-v] [-u] [-U] [-m] <jvm-args> <endpoint> <main-args>

  -v          : verbose mode flag
  -u          : update/regenerate cached environment
  -U          : force update from remote Maven repositories (implies -u)
  -m          : use endpoints for dependency management (see "Details" below)
  <jvm-args>  : any list of arguments to the JVM
  <endpoint>  : the artifact(s) + main class to execute
  <main-args> : any list of arguments to the main class

The endpoint should have one of the following formats:

- groupId:artifactId
- groupId:artifactId:version
- groupId:artifactId:mainClass
- groupId:artifactId:version:mainClass
- groupId:artifactId:version:classifier:mainClass

If version is omitted, then RELEASE is used.
If mainClass is omitted, it is auto-detected.
You can also write part of a class beginning with an @ sign,
and it will be auto-completed.

Multiple artifacts can be concatenated with pluses,
and all of them will be included on the classpath.
However, you should not specify multiple main classes.

示例

<表><广告>程序命令 < /广告><正文>Jython复制jgo org.python:jython独立版JRuby评估echo"输入‘Hello Ruby’"jgo org.jruby:jruby complete:@jruby.maingroovy复制 jgo org.codehaus.groovy:groovy groovysh:@shell.main+commons cli:commons cli:1.3.1scijava repl和jruby jgo org.scijava:scijava common:@scriptrepl+org.scijava:scripting jrubyscijava repl和jython jgo org.scijava:scijava common:@scriptrepl+org.scijava:scripting jython带有groovy的scijava repl jgo org.scijava:scijava-common:@scriptrepl+org.scijava:scripting groovyscijava repl和clojure jgo org.scijava:scijava common:@scriptrepl+org.scijava:scripting clojurescijava repl和javascript jgo org.scijava:scijava common:@scriptrepl+org.scijava:scripting javascript

请注意根据需要使用+语法将元素附加到类路径。

FAQ

  • 很快吗?< /强> 端点在~/.jgo下的本地缓存中合成。 因此,再次调用同一个端点非常快。
  • 什么叫"不安装"?< /强> 类路径元素是硬链接的 从~/.m2/repository进入~/.jgo而不是复制,因此~/.jgo 即使执行许多不同的端点,文件夹的占用空间也很小。
  • 如果端点有新版本怎么办?< /强> 将-u标志传递到jgo以重建端点。 请注意,与mvn不同的是,jgo不会检查其他更新。

配置

您可以使用$home/.jgorc文件配置jgo的行为。

存储库

您可以定义其他远程maven存储库, 从中检索工件。例如:

[repositories]scijava.public=https://maven.scijava.org/content/groups/public

如果您需要更多地控制工件的来源,例如 希望使用自己的远程maven存储库作为maven central的镜像 可以使用maven常用的~/.m2/settings.xml;请参阅使用镜像 存储库

快捷键

您可以定义启动常用程序的快捷方式:

[shortcuts]repl=imagej:org.scijava.script.ScriptREPLimagej=net.imagej:imagejfiji=sc.fiji:fiji:LATESTscifio=io.scif:scifio-cli

快捷方式从端点的开头开始逐字替换, 按定义顺序进行单次传递。因此,现在您可以运行:

jgo repl

注意,使用上面的repl快捷方式,main类 (org.scijava.script.scriptrepl)来自不同于 顶层工件(net.imagej:imagej)。这是故意的,所以 所有imagej,包括所有不同的scijava 脚本-<;foo>;插件包含在repl的类路径中。

设置

有几个可配置的设置:

[settings]m2Repo=/path/to/.m2Repo (default ~/.m2/repository)cacheDir=/path/to/.jgo (default ~/.jgo)links=soft (options: hard, soft, none; default hard)

注意,jgocache dir也可以通过jgo\u cache dir环境设置 当使用python时变量。从中读取缓存目录的优先级 最高到最低:

  • jgo_cache_dir环境变量
  • cachedir设置中的~/.jgorc
  • 节中
  • 默认为~/.jgo

详细信息

依赖关系管理

maven有一个特性,项目可以重写transitive的版本。 (也称为继承)依赖项,通过<;DependencyManagement>;配置。 问题是:库可能会认为它依赖于 由其<;dependencymanagement>;定义的特定版本,但在下游 依赖于该库的项目将解析为不同的版本。 请参见此SO线程本要点 有关详细信息。

要解决这个问题,可以将-m传递给jgo,jgo 使其将所有端点添加到合成的POM <;DependencyManagement>;节使用 导入作用域。 通过这样做,在 尽管在 通过+运算符连接多个端点的情况 冲突的依赖关系管理,早期的端点将获胜,因为它们 将在POM中提前声明。也见 在JGO问题跟踪器中的问题9。

备选方案

这里有jpm4j,但对我来说并不太好:

还有一个更通用的工具mop,它有类似的功能,但从2010年开始就没有开发过,它的网站也处于离线状态。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaFXControlsFX8.0.6对话框java。util。丢失资源异常   java覆盖@CollectionTable   java在BlackBerry中访问internet以执行POST的不同方式   在Spring中为CSS找到java NoHandler   java如何在Google App Engine的应用程序中配置servlet过滤器。yaml文件?   java无法在域模式下创建gc日志   Java:匹配数组元素并删除   java如何使所有按钮在JavaFX浏览器中正常工作?   java如何将admob广告放置在LibGDX视图上方   从java HTTP响应获取正确的类型/编码   保存Java配置信息的最佳位置   java如何从pc将当前日期设置为jDateChooser?   java在数组中多次存储用户输入   java Lein安装/uberjar在尝试将依赖项中的类与genclass一起使用时失败   java从菜单执行SQL语句   java如何将自定义反序列化器Gson中的JsonElement值小写?   java如何在同一页而不是新页上获得响应   如何在Java中生成最小值和最大值之间的随机整数?   从不同类访问Java hashmap   java Hibernate无法从数据库中正确读取对象