# 快照

### 内容

* [快照介绍](/zhong-wen-v1.0.0/pei-zhi/kuai-zhao.md#gai-shu-jie-shao)
* [安装说明](/zhong-wen-v1.0.0/pei-zhi/kuai-zhao.md#an-zhuang-shuo-ming)
* [局限](/zhong-wen-v1.0.0/pei-zhi/kuai-zhao.md#ju-xian)
* ND4J后端配置
* [Gradle用户需知](/zhong-wen-v1.0.0/pei-zhi/kuai-zhao.md#gradle-yong-hu-xu-zhi)

## 概述／介绍

我们提供仓库的自动化日常构建，如ND4J, DataVec, DeepLearning4j, RL4J等等，所以所有最新的功能和最新的bug修复都是每天发布的。

快照像任何其他的Maven依赖一样工作。唯一的区别是，它们是从自定义存储库提供的，而不是从Maven Central提供的。

由于正在进行的开发，快照版应该被认为比发布版更不稳定：在正常开发过程中，原则上可以在任何时候引入破坏性的变化或错误。通常情况下，应在可能的情况下使用发布版本（不是快照），除非需要修复错误或需要新的功能。

## 安装说明

**步骤1:** 若要在项目中使用快照，应将像这样将快照仓库信息添加到你的POM.xml文件中：

```markup
<repositories>
    <repository>
        <id>snapshots-repo</id>
        <url>https://oss.sonatype.org/content/repositories/snapshots</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
            <updatePolicy>daily</updatePolicy>  <!-- Optional, update daily -->
        </snapshots>
    </repository>
</repositories>
```

**步骤2:** 请确保指定快照版本。我们遵循一个简单的规则：如果最新的稳定发布版本是`A.B.C`，快照版本将是`A.B.(C+1)-SNAPSHOT`。当前快照版本为 `1.0.0-SNAPSHOT`。有关pom.xml文件的存储库部分的更多细节，请参见[Maven ](https://maven.apache.org/settings.html#Repositories)文档

如果使用类似DL4J示例的属性，则更改：从版本：

```markup
<dl4j.version>1.0.0-beta6</dl4j.version>
<nd4j.version>1.0.0-beta6</nd4j.version>
```

改为版本:

```markup
<dl4j.version>1.0.0-SNAPSHOT</dl4j.version>
<nd4j.version>1.0.0-SNAPSHOT</nd4j.version>
```

**使用快照的示例pom.xml**

这里提供了示例pom.xml：[使用快照的示例pom.xml](https://gist.github.com/AlexDBlack/28b0c9a72bce562c8782be326a6e2aaa)。这是从DL4J独立示例项目中获取的，并且使用上面的步骤1和2进行了修改。原件（使用最新版本）可以在[这里](https://github.com/deeplearning4j/dl4j-examples/blob/master/standalone-sample-project/pom.xml)找到

## 局限

`-platform`（所有操作系统）和单操作系统（非平台）快照依赖项都已释放。由于快照的多平台构建特性，`-platform`工件可能（虽然很少）暂时不同步，这可能会导致构建问题。&#x20;

如果您只在一个平台上构建和部署，那么使用如下non-platform构件会比较安全

```markup
        <dependency>
            <groupId>org.nd4j</groupId>
            <artifactId>nd4j-native</artifactId>
            <version>${nd4j.version}</version>
        </dependency>
```

## 用于快照的有用的Maven命令

在Maven中使用快照依赖时可能有用的两个命令如下：

1. `-U` - 例如, 在  `mvn package -U`. 这个 `-U` 选项强制Maven去检查 (并且有必要的话，下载)最新的快照版。这在你需要确保你有绝对最新快照版时很有用。&#x20;
2. `-nsu` - 例如, 在 `mvn package -nsu`. 这个 `-nsu` 选项停止Maven正在进行的快照版检查。但是，请注意，只有当你有一些快照依赖项已经下载到本地Maven缓存 (.m2 目录)中时，你的构建才会成功使用此选项。

另一种方法（1）是在`<repositories>节点`设置 `<updatePolicy>always</updatePolicy>`

另一种方法（2）是在`<repositories>节点`设置设置`<updatePolicy>never</updatePolicy>`

## Gradle用户需知

快照不能与Gradle一起工作。你必须使用Maven下载文件。之后，你可以尝试使用 `mavenLocal()`使用本地Maven仓库。

最小文件像这样：

```
version '1.0-SNAPSHOT'

apply plugin: 'java'

sourceCompatibility = 1.8

repositories {
    maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
    mavenCentral()
}

dependencies {
    compile group: 'org.deeplearning4j', name: 'deeplearning4j-core', version: '1.0.0-SNAPSHOT'
    compile group: 'org.deeplearning4j', name: 'deeplearning4j-modelimport', version: '1.0.0-SNAPSHOT'
    compile "org.nd4j:nd4j-native:1.0.0-SNAPSHOT"
    // Use windows-x86_64 or linux-x86_64 if you are not on macos
    compile "org.nd4j:nd4j-native:1.0.0-SNAPSHOT:macosx-x86_64"
    testCompile group: 'junit', name: 'junit', version: '4.12'

}
```

应该在理论上工作，但事实并非如此。这是因为[Gradle的一个缺陷](https://github.com/gradle/gradle/issues/2882)。带有快照的Gradle和Maven分类器似乎有问题。

值得注意的是，当使用Gradle上的ND4J本地后端（和SBT -但不是Maven）时，需要添加OpenBLAS作为依赖项。我们在-platform pom上为你做了这件事。参考-platform pom [这里](https://github.com/deeplearning4j/deeplearning4j/blob/master/nd4j/nd4j-backends/nd4j-backend-impls/nd4j-native-platform/pom.xml#L19)来重复检查你的依赖关系。请注意，这些是版本属性。有关运行 nd4j-native所需的OpenBLAS和javacpp presets当前版本，请参阅POM的`<properties>`节点。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://deeplearning4j.konduit.ai/zhong-wen-v1.0.0/pei-zhi/kuai-zhao.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
