Jar配置及其内容

时间:2012-02-22 00:12:11

标签: java deployment maven jar ivy

在下载Google Guice时,我注意到downloads page上有两种主要的“工件类型”:

  • guice-3.0.zip;和
  • guice-3.0-src.zip

在下载它们并检查它们的内容时,它们似乎是Guice 3.0版本的两个完全不同的“视角”。

guice-3.0.zip只包含Guice jar及其依赖项。但是,guice-3.0-src.zip不包含实际的Guice jar,但 包含各种其他优点:javadocs,examples等。

所以它让我思考:必须有不同的“配置”的jar在Java项目中发布。将这个想法与我所知道的构建工具(如工具配置的概念)和Maven(具有工件范围的概念)的构建工具交叉,我是想知道工件配置/范围与最终可交付成果(jar)之间的关系。

假设我正在制作一个名为my-utils.jar的实用工具罐。在其Ivy描述符中,我可以将log4j引用为编译时依赖项,将junit引用为测试依赖项。然后我可以指定在构建时解决这两个“配置”中的哪一个。

我想知道的是:这些配置与最终结果中产生的罐子内容之间的“映射”是什么?

例如,我可能会将所有compile配置依赖关系打包在主my-utils.jar中,但是有理由将我的test依赖关系打包成my-utils-test.jar 1}?什么样的依赖关系会出现在my-utils-src.jar

我知道这些是很多小问题,所以我想你可以总结如下:

  • 对于一个主要项目,已发布的罐子的典型品种是什么(例如guice-3.0.zip vs guice-3.0-src.zip等),每种罐子的典型内容是什么,以及它们如何映射回到常春藤配置或Maven范围的概念?

1 个答案:

答案 0 :(得分:2)

您需要运行的是guice-3.0.zip。它在正确的包结构中有.class个文件。

另一个JAR guice-3.0-src.zip包含.java源文件和其他您可能会觉得有用的内容。像IntelliJ这样的智能IDE可以使用源JAR来允许您使用调试器进入Guice代码并查看正在发生的事情。

通过阅读Guice源代码,您还可以学到很多东西。它有助于了解比你和我更聪明的开发人员如何编写代码。

我会说我找到的最好的例子是Google Code上的Efficient Java Matrix Library。它有一个广泛的JUnit测试套件,可以与源代码,文档以及您需要的其他所有内容一起使用。我认为这是最令人印象深刻的。我想亲自模仿它。