从Python和CLI启动Java代码,免费安装。
jgo的Python项目详细描述
JGO:无痛Java组件执行< /H1>
摘要
maven是一个很好的工具。它管理依赖关系 Java项目以更健壮的方式成为可重用的"构建块"。 比许多其他语言所提供的要多。以及 maven中央存储库包含一个巨大的 丰富的代码,可以在您自己的项目中重用。
但令人震惊的是,maven并没有提供一种简单的方法来从
精心管理的依赖项存储在~/.m2/repository
jgo
使用maven获取并运行主类。安装
有两种实现可供选择!各有利弊。
先决条件
<>代码> JGO 使用<代码> MVN和<代码> Java<代码>。 shell脚本版本需要一些常用的实用程序(例如,cat
)。
如果您遗漏了任何内容,脚本将告诉您。shell脚本
sh shell脚本需要一个posix友好的系统。众所周知
在Linux、MacOS上工作,cygwin,Microsoft的
Windows Linux子系统,
并通过
Git for Windows项目。 只需将这个repo和symlink 例如,假设 请注意根据需要使用 您可以使用 您可以定义其他远程maven存储库,
从中检索工件。例如: 如果您需要更多地控制工件的来源,例如
希望使用自己的远程maven存储库作为maven central的镜像
可以使用maven常用的 您可以定义启动常用程序的快捷方式: 快捷方式从端点的开头开始逐字替换,
按定义顺序进行单次传递。因此,现在您可以运行: 注意,使用上面的 有几个可配置的设置: 注意, maven有一个特性,项目可以重写transitive的版本。
(也称为继承)依赖项,通过 要解决这个问题,可以将 这里有jpm4j,但对我来说并不太好: 它想在maven之外维护自己的jar本地存储库,为什么?
每个人都应该使用maven存储库,这是一个完全建立的标准。 对于每个工件,必须选择一个主类作为其唯一命令
链接到运行它的shell命令。 它似乎与Maven Central不太同步,和/或不同步
似乎以预期的方式处理依赖关系;例如: 奇怪的是,源代码是bnd的一部分。
而不是在任何地方的jpm4j组织中,
这不是一个好兆头,模块化方面。 自2017年4月起,网站处于脱机状态。 还有一个更通用的工具mop,它有类似的功能,但从2010年开始就没有开发过,它的网站也处于离线状态。安装shell脚本
jgo.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.main
groovy复制
jgo org.codehaus.groovy:groovy groovysh:@shell.main+commons cli:commons cli:1.3.1
scijava repl和jruby
jgo org.scijava:scijava common:@scriptrepl+org.scijava:scripting jruby
scijava repl和jython
jgo org.scijava:scijava common:@scriptrepl+org.scijava:scripting jython
带有groovy的scijava repl
jgo org.scijava:scijava-common:@scriptrepl+org.scijava:scripting groovy
scijava repl和clojure
jgo org.scijava:scijava common:@scriptrepl+org.scijava:scripting clojure
scijava 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
的行为。存储库
[repositories]scijava.public=https://maven.scijava.org/content/groups/public
~/.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)
jgo
cache dir也可以通过jgo\u cache dir
环境设置
当使用python时变量。从中读取缓存目录的优先级
最高到最低:jgo_cache_dir
环境变量cachedir
在设置中的
~/.jgorc
~/.jgo
详细信息
依赖关系管理
<;DependencyManagement>;
配置。
问题是:库可能会认为它依赖于
由其<;dependencymanagement>;
定义的特定版本,但在下游
依赖于该库的项目将解析为不同的版本。
请参见此SO线程和
本要点
有关详细信息。-m
传递给jgo,jgo
使其将所有端点添加到合成的POM
<;DependencyManagement>;
节使用
导入作用域。
通过这样做,在
尽管在
通过+
运算符连接多个端点的情况
冲突的依赖关系管理,早期的端点将获胜,因为它们
将在POM中提前声明。也见
在JGO问题跟踪器中的问题9。备选方案
0
cd
git clone https://github.com/scijava/jgo
cd bin
ln -s ../jgo/jgo.sh jgo
jgo --help
推荐PyPI第三方库