【发布时间】:2012-03-12 08:09:36
【问题描述】:
在下载 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、示例等。
所以这让我想到:在 Java 项目中发布的 jar 必须有不同的“配置”。将这个想法与我从 Ivy(它具有工件 配置 的概念)和 Maven(它具有工件 范围 的概念)之类的构建工具所了解的知识相结合,我是想知道工件配置/范围和最终交付物(jar)之间的关系是什么。
假设我正在制作一个名为 my-utils.jar 的实用程序 jar。在其 Ivy 描述符中,我可以将 log4j 作为编译时依赖项,将 junit 作为测试依赖项。然后我可以指定在构建时解决这两个“配置”中的哪一个。
我想知道的是:这些配置和最终结果产生的jar内容之间的“映射”是什么?
例如,我可能将我所有的compile 配置依赖项打包到主my-utils.jar 中,但是有没有理由将我的test 依赖项打包到my-utils-test.jar 中? my-utils-src.jar 中会包含什么样的依赖关系?
我知道这些都是很多小问题,所以我想你可以总结如下:
- 对于一个大项目,放出来的jar的典型品种有哪些(如
guice-3.0.zipvsguice-3.0-src.zip等),各自的典型内容是什么,又如何映射回概念常春藤配置或 Maven 范围?
【问题讨论】:
标签: java deployment maven jar ivy