Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将API代码与类一起放入JAR有什么缺点吗?_Java_Eclipse_Api_Jar_Javadoc - Fatal编程技术网

Java 将API代码与类一起放入JAR有什么缺点吗?

Java 将API代码与类一起放入JAR有什么缺点吗?,java,eclipse,api,jar,javadoc,Java,Eclipse,Api,Jar,Javadoc,在Java中,如果将源代码(.Java)文件与类(.class)一起打包到jar中,大多数IDE(如eclipse)都会显示javadoc注释以完成代码 IIRC很少有像JMock这样的开源项目 假设我已经将我的API代码与实现代码完全分离,这样我就有了类似于myproject-API.jar和myproject-impl.jar的东西,有什么理由不应该将源代码放在myproject-API.jar中吗 因为表现?尺寸 为什么其他项目不这样做 编辑:除了Maven下载问题之外,将我的源代码放入c

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

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

假设我已经将我的API代码与实现代码完全分离,这样我就有了类似于myproject-API.jar和myproject-impl.jar的东西,有什么理由不应该将源代码放在myproject-API.jar中吗

因为表现?尺寸

为什么其他项目不这样做


编辑:除了Maven下载问题之外,将我的源代码放入classes jar以支持尽可能多的开发人员(Maven或非Maven)会有什么影响吗?

通常由于发行原因:

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

  • myprojectapi.jar
    myprojectimpl.jar
  • myprojectapi src.jar
    myprojectimpl src.jar
  • myprojectapi docs.zip
    myprojectimpl docs.zip
现在,你也可以自动

mvn eclipse:eclipse -DdownloadSources=true -DdownloadJavadocs=true 
现在,当有人在jar上声明依赖关系时,它还可以防止源jar或javadoc jar的分发。
OP评论:

也无法想象下载量会成为一个问题(我的意思是2010年,10万不应该是一个问题)

实际上,它(即“尺寸”)是一个问题。
Maven已经患有“第一次构建时下载一半互联网”综合症。
如果下载源代码和/或javadocs,那就真的很烦人了

此外,“分发”方面还包括一个部署中的部署


最后,如果您真的需要将源代码与二进制文件关联起来,请使用maven自动附加源代码,如下所示:

javadocs是这样的:

这样,它们将自动被

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

或者通过m2eclipse

我当然可以看到。但是将myproject-api.jar与myproject-api-src.jar关联起来,这样您就可以通过代码完成来查看javadoc,这是一件痛苦的事情。Maven Eclipse插件可以做到这一点吗?我也无法想象下载大小会成为一个问题(我的意思是,2010年,10万应该不是一个问题)。因此,创建单独的jar,但让*-api.jar也有源代码。@Adam:刚刚完成我的回答。是的,我注意到maven下载地狱。幸运的是,不幸的是,在我的公司,我们使用Apache Ivy。另一个问题是,公司中的许多人不使用maven。谢谢你的回答。我确实有一个groovy脚本可以uld通过编辑Eclipse.classpath将代码JAR与来自maven的源JAR关联起来。我不使用maven插件,但我必须想象它会自动进行这种关联。是的,我认为maven做到了,因为我可以发誓我上次使用它时就做到了。唯一的问题是很多公司/团体(遗憾的是,包括我的公司/团体)都这么做了不要使用Maven,而是使用ApacheIvy,或者只使用自己的jar repo。真的吗?我已经有3年没有任何非Maven客户端了。但是因为Ivy是“Maven兼容的”“,必须有一种方法来模仿IVYY中的这种行为你必须和一些聪明人一起工作:)是的,我希望我也是这样,但我们的客户/客户端和内部代码都使用ApacheAnt。由于项目之间的不一致性,我越来越不喜欢Ant脚本了。我非常喜欢Ant,因为maven做不到的事情。但是maven的一致性可以节省大量的时间。因此,如果您想要真正的功能,请使用maven和嵌入式ant或gmaven(groovy)