将API代码与类一起放入JAR有什么不利之处吗?

在Java中,如果将源代码( .java)文件与类( .class) 一起打包到jar中,大多数IDE都会像eclipse一样显示代码完成的javadoc注释。

IIRC很少有像JMock这样的开源项目。

让我说我已经干净地将我的API代码与实现代码分开,以便我有类似myproject-api.jar和myproject-impl.jar的东西有什么理由我不应该把源代码放在我的myproject-api.jar中?

因为性能? 尺寸?

为什么其他项目不这样做?

编辑:除了Maven下载问题,将我的源代码放入类jar以支持尽可能多的开发人员(maven与否)会有什么损害吗?

一般因为分配原因:

如果您保留单独的二进制文件和来源,则只能下载所需内容。
例如:

  • myproject-api.jarmyproject-impl.jar
  • myproject-api-src.jarmyproject-impl-src.jar
  • myproject-api-docs.zipmyproject-impl-docs.zip

现在, m2eclipse – Maven for Eclipse也可以自动下载源代码

 mvn eclipse:eclipse -DdownloadSources=true -DdownloadJavadocs=true 

现在,它还可以生成正确的pom,以防止在任何人声明对jar的依赖时分发源或javadoc jar。
OP意见:

也无法想象下载大小是一个问题(我的意思是它是2010年一对夫妇100k不应该是一个问题)。

实际上它(即“大小”)是一个问题。
Maven已经遭受了“第一次建立互联网下载一半”综合症的影响。
如果下载源和/或javadocs,那开始真的很烦人。

此外,“分发”方面包括部署 :在webapp服务器中,部署带有源的jar没有真正的优势 。

最后,如果您确实需要将源与二进制文件关联起来,那么Maven上的这个SO问题可能有所帮助 。

使用maven,自动附加源,如下所示:

http://maven.apache.org/plugins/maven-source-plugin/usage.html

和这样的javadocs:

http://maven.apache.org/plugins/maven-javadoc-plugin/jar-mojo.html

这样他们就会被自动接收

 mvn eclipse:eclipse -DdownloadSources=true -DdownloadJavadocs=true 

或者通过m2eclipse