IDE独立于源代码

时间:2013-04-11 18:50:35

标签: java ide

最近我在这里发布了一个关于堆栈溢出的问题,寻找关于如何在eclipse中创建具有依赖关系的jar文件的一些指令。当我提出这个问题时,很快就会发现我的问题措辞很差,并且让那些回应的人感到困惑,但这次事故带来了一个兴趣点,我想稍微解释一下。因此,当我在eclipse中发布关于如何执行此操作的问题时,我几乎立即得到了响应“切换到Maven,不要依赖于IDE来完成构建工具的工作”。这似乎有点回避而不是对我有帮助,特别是考虑到我已经提到我已经使用Ant为我的项目生成一个jar文件。当我问为什么时,我得到了回复“因为你的代码应该能够独立于编写它的IDE而构建”。

首先,有什么方法可以创建一个jar文件,其依赖关系在jar中,或者在lib文件夹中,使我的代码依赖于IDE?我的代码,无论有没有dist目录,仍然包含一个src目录,具有典型的java源目录结构。这似乎是一个不合理的问题。我觉得,如果我说使用类库,并进行一些小的更改并需要部署到开发机器进行测试,我应该能够在我的IDE中轻松地构建一个包含所有依赖项的jar文件来部署它在某个地方。拥有这种能力是一个构建步骤,而不是设计步骤。它不会改变源代码目录的结构,也不会改变代码的任何内容。它不会创建任何部分类,或者仅为我正在使用的IDE设计的其他偷偷摸摸的VS类型的东西,它只是请求具有有效清单的jar文件及其依赖项。请问IDE是真的那么多,还是我错了?

在我看来,从一个IDE到另一个IDE的任何更改都需要进行一些转换工作。我在java中编写的代码没有明确说明给定程序集的位置,并且假设它不是某些API,它在磁盘上的位置在安装期间被添加到环境变量中,您将始终必须手动解析这些引用。如果我错了,请纠正我,但java编译器是否强制执行源代码的目录结构(如果不正确则抛出NoClassDef类型异常),因此IDE(至少对于java)是围绕该要求构建的?我也觉得IDE的变化很少见。人们对他们的工具感到满意,并且不只是随机决定开始使用相同语言的同一个项目的全新IDE。其他情况需要向一个人施加压力(新技术或其他)。我还认为,许多开发人员在同一个地方工作,使用相同语言并使用多个IDE的可能性几乎不存在。我在整个开发团队工作的每个地方都使用相同的工具集,开发团队正在开发相同类型的项目。 Android开发人员正在使用eclipse,ASP.NET开发人员正在使用Visual Studio等。我知道它发生了,但根据我的经验,IDE的更改通常意味着转换为最近发布的同一IDE的任何新版本,并且通常它来了具有某种向后兼容性或转换向导。

我不是试图变得滑稽,也不是试图参与我之前的帖子,我对他们的推理合法感兴趣。鉴于他们的回答得到的票数很多,似乎大多数社区都同意,并且为了不是一只羊,请帮助我理解。

1 个答案:

答案 0 :(得分:3)

您通常希望有一种方法可以从IDE外部通过自动构建工具构建jar,因为它可以实现可重复的自动化过程。假设您从Eclipse构建jar,并通过包含源代码和lib目录来实现。然后其他人去构建它,他们忘记包含lib目录。当你的构建变得更复杂时,可能很难找到问题。

例如,如果您在构建服务器上运行代码,则没有ide,因此需要有一种方法来自动构建它。你当然可以推出自己的脚本,但有一些工具可以让它变得更容易 - 即gradle,maven和ant(无论如何都是在java世界中)。

您始终可以在IDE中使用该构建脚本,但需要有一种不使用IDE构建的方法,并且所有构建都应该是一致的。

像maven这样的工具也不仅仅是构建,它们有助于管理依赖关系。使用存储库管理器来存储项目所需的工件,因此您不必担心拥有lib文件夹并手动管理依赖项。你只需说出你想要的东西,构建工具就会知道如何获得它。

能够快速建立也很重要。运行构建脚本比手动打包要快得多。

希望这能让人深入了解其他人推荐使用构建工具的原因。这是一个好主意,任何认真的项目都需要它们。