Eclipse .classpath / .project文件中有什么?

我们最近在一个Eclipse项目中遇到了一个我们团队成员的问题。 Tomcat没有部署应用程序的JAR。

我们最终注意到.classpath Eclipse文件与项目正常的团队成员不一样。 我们用一个OK项目replace了.classpath文件,Tomcat部署完成。

只是出于好奇,并知道如果有什么不对,将来要看什么, .classpath.project文件里面有什么。 我可以在那里添加什么,这是什么意思?

Eclipse是一个插件的运行时环境。 在Eclipse中看到的几乎所有东西都是Eclipse上安装插件的结果,而不是Eclipse本身。

.project文件由核心Eclipse平台维护,其目标是从通用的独立于插件的Eclipse视图中描述项目。 什么是该项目的名字? 工作区中还有哪些其他项目涉及到? 什么是build设者用于build设该项目? (请记住,“构build”的概念不是专门针对Java项目,而是针对其他types的项目)

.classpath文件由Eclipse的JDT特性( feature =插件集)维护。 JDT在项目中保存了多个这样的“meta”文件(参见项目中的.settings目录)。 .classpath文件就是其中之一。 具体来说, .classpath文件包含了JDT特性为了正确编译项目所需的信息:项目的源文件夹(即编译内容); 输出文件夹(在哪里编译); 和类path条目(例如工作空间中的其他项目,文件系统上的任意JAR文件等)。

盲目地将这些文件从一台机器复制到另一台机器可能是有风险的。 例如,如果任意的JAR文件被放置在类path上(即,位于工作空间之外并被绝对path命名引用的JAR文件),那么.classpath文件将呈现为不可移植的,并且必须按顺序修改便携。 有一些可以遵循的最佳实践来保证.classpath文件的可移植性。

.project

在工作区中创build项目时,会自动生成描述项目的项目描述文件。 此文件的唯一目的是使项目自我描述,以便压缩或释放到服务器的项目可以在另一个工作区中正确地重新创build。

.classpath

类path指定项目中的哪些Java源文件和资源文件被Java构build器考虑,并指定如何在项目之外查找types。 Java构build器将Java源文件编译到输出文件夹中,并将资源复制到其中。

完整的引用不适用于所提及的文件,因为它们可以通过各种插件进行扩展。

基本上,.project文件存储项目设置,比如构build器和项目自然设置,而.classpath文件定义在运行期间使用的类path。 类path文件包含与项目中的文件夹相对应的src和target条目; con条目用于描述某种“虚拟”条目,例如JVM库或eclipse插件依赖项(正常的Java项目依赖项显示不同,使用特殊的src条目)。

这个eclipse文档详细介绍了.project文件中的标记: 项目描述文件

它将.project文件描述为:

在工作区中创build项目时,会自动生成描述项目的项目描述文件。 此文件的目的是使项目自我描述,以便压缩或释放到服务器的项目可以在另一个工作区中正确地重新创build。 这个文件总是被称为“.project”