将API代码与类一起放入JAR是否有任何不利之处?

时间:2010-05-22 13:45:20

标签: java eclipse api jar javadoc

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

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

假设我已经将我的API代码与实现代码完全分开,因此我有类似myproject-api.jar和myproject-impl.jar的内容,因为我不应该将源代码放在myproject-api中。罐子?

因为性能?大小

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

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

2 个答案:

答案 0 :(得分:6)

一般是因为分配原因:

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

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

现在,m2eclipse - Maven for Eclipse也可以自动download sources

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

现在,它还可以generate the right pom阻止在任何人声明对jar的依赖时分发源或javadoc jar。
OP评论:

  

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

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

另外,“分发”方面包括webapp server, there is no real advantage to deploy a jar with sources in it中的部署

最后,如果您确实需要将来源与二进制文件相关联,请SO question on Maven could help

答案 1 :(得分:1)

使用maven,自动附加源:

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

和这样的javadoc:

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

这样他们就会自动被

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

或通过m2eclipse