在下载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范围的概念?答案 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测试套件,可以与源代码,文档以及您需要的其他所有内容一起使用。我认为这是最令人印象深刻的。我想亲自模仿它。