# 设置包版本信息

> 原文： [https://docs.oracle.com/javase/tutorial/deployment/jar/packageman.html](https://docs.oracle.com/javase/tutorial/deployment/jar/packageman.html)

您可能需要在 JAR 文件的清单中包含软件包版本信息。您使用清单中的以下标头提供此信息：

**Headers in a manifest**
| 头 | 定义 |
| --- | --- |
| `姓名` | 规范的名称。 |
| `规格书 - 标题` | 规范的标题。 |
| `规格 - 版本` | 规范的版本。 |
| `规格供应商` | 规范的供应商。 |
| `实现 - 标题` | 实现的标题。 |
| `实现 - 版本` | 实现的内部版本号。 |
| `实现 - 供应商` | 实现的供应商。 |

可以为每个包分配一组这样的头。版本控制标题应直接出现在包的`名称`标题下方。此示例显示所有版本控制标头：

```
Name: java/util/
Specification-Title: Java Utility Classes
Specification-Version: 1.2
Specification-Vendor: Example Tech, Inc.
Implementation-Title: java.util
Implementation-Version: build57
Implementation-Vendor: Example Tech, Inc.

```

有关包版本标头的更多信息，请参阅[包版本控制规范](https://docs.oracle.com/javase/8/docs/technotes/guides/versioning/spec/versioning2.html#wp89936)。

## 一个例子

我们希望在 MyJar.jar 的清单中包含上面示例中的标头。

我们首先创建一个名为 `Manifest.txt` 的文本文件，其中包含以下内容：

```
Name: java/util/
Specification-Title: Java Utility Classes
Specification-Version: 1.2
Specification-Vendor: Example Tech, Inc.
Implementation-Title: java.util 
Implementation-Version: build57
Implementation-Vendor: Example Tech, Inc.

```

* * *

**Warning:** The text file must end with a new line or carriage return. The last line will not be parsed properly if it does not end with a new line or carriage return.

* * *

然后，我们通过输入以下命令创建名为 `MyJar.jar` 的 JAR 文件：

```
jar cfm MyJar.jar Manifest.txt MyPackage/*.class

```

这将创建一个带有以下内容的清单的 JAR 文件：

```
Manifest-Version: 1.0
Created-By: 1.7.0_06 (Oracle Corporation)
Name: java/util/
Specification-Title: Java Utility Classes
Specification-Version: 1.2
Specification-Vendor: Example Tech, Inc.
Implementation-Title: java.util 
Implementation-Version: build57
Implementation-Vendor: Example Tech, Inc.

```