魔法¶
IJava 中的魔法与 IPython 中的魔法非常相似。其中有:
行魔法:这是通过一个魔法函数的内联函数调用。
%mavenRepo oss-sonatype-snapshots https://oss.sonatype.org/content/repositories/snapshots/ %maven io.github.spencerpark:jupyter-jvm-basekernel:2.0.0-SNAPSHOT List<String> addedJars = %jars C:/all/my/*.jar
单元格魔法:这是整个单元格的函数调用,将单元格的主体作为一个特殊参数。
%%loadFromPOM <repository> <id>oss-sonatype-snapshots</id> <url>https://oss.sonatype.org/content/repositories/snapshots/</url> </repository> <dependency> <groupId>io.github.spencerpark</groupId> <artifactId>jupyter-jvm-basekernel</artifactId> <version>2.0.0-SNAPSHOT</version> </dependency>
在需要编程访问的情况下,这些魔法只是简单地解读为对 lineMagic
和 cellMagic
的调用。这些函数在笔记本命名空间中,其签名如下。请注意返回类型,它允许隐式转换为所需的任何类型,但这些检查并不安全。
<T> T lineMagic(String name, java.util.List<String> args)
<T> T cellMagic(String name, java.util.List<String> args, String body)
IJava 提供的魔法¶
有可能成为魔法的东西是内核元函数或操作源代码的函数。魔法应该只用于只在类似 Jupyter 的环境中出现并且只使用字符串参数的东西。其他东西(如 display
和 render
)应该作为普通函数提供。
jars¶
在笔记本 classpath 中添加 jars。
Line magic¶
arguments:
varargs 列出了本地文件系统中 jars 的简单 glob 路径。如果 glob 匹配了一个目录,该目录中的所有文件都将被添加。
classpath¶
向笔记本 classpath 添加条目。
Line magic¶
arguments:
varargs 列出了本地文件系统上的条目的简单 glob 路径。这包括目录或 jars。
addMavenDependencies¶
将 maven 工件添加到笔记本 classpath。所有横向依赖也被添加到 classpath 中。另见 addMavenRepo。
Line magic¶
aliases:
addMavenDependency
,maven
arguments:
varargs 形式为
groupId:artifactId:[packagingType:[classifier]]:version
的依赖性坐标列表
addMavenRepo¶
在使用 addMavenDependencies 时,添加一个要搜索的 maven 仓库。
Line magic¶
aliases:
mavenRepo
arguments:
repository id
repository url
loadFromPOM¶
加载 POM 中指定的任何依赖性。这将忽略用 addMavenRepo 添加的资源库,因为 POM 可能会指定它自己的资源库。
单元格魔法的设计是为了使其非常简单地从任何 README 中复制和粘贴指定的 maven POM 片段,以用于依赖一个工件(包括除中央仓库以外的仓库)。
Line magic¶
arguments:
path to local POM file
varargs 用来过滤依赖关系的作用域类型的列表。如果没有提供,则默认为
compile
、runtime
、system
和import
。
单元格魔法¶
arguments:
varargs 用来过滤依赖关系的作用域类型的列表。如果没有提供,则默认为
compile
、runtime
、system
和import
。
body:一个 partial POM 字面值。
如果 body 是一个 xml
<project>
标签,那么主体就会作为 POM 使用,而不会被修改。否则,这个魔法会试图根据它得到的 xml 片段来建立一个 POM。
<modelVersion>
、<groupId>
、<artifactId>
和<version>
如果不提供,就给默认值,除了它们恰好是复制粘贴的内容外,没有理由提供。所有
<dependencies>
和<repositories>
的子代都被收集起来,连同任何松散的<dependency>
和repository
标签。例如:要添加一个不在中央的依赖,只需添加一个有效的
<repository>
和<dependency>
,魔术师就会把它放到 POM 中。%%loadFromPOM <repository> <id>oss-sonatype-snapshots</id> <url>https://oss.sonatype.org/content/repositories/snapshots/</url> </repository> <dependency> <groupId>io.github.spencerpark</groupId> <artifactId>jupyter-jvm-basekernel</artifactId> <version>2.0.0-SNAPSHOT</version> </dependency>