将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.jar
和myproject-impl.jar
-
myproject-api-src.jar
和myproject-impl-src.jar
-
myproject-api-docs.zip
和myproject-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