我应该保留Eclipse Java facet吗?

3

文档中所述,Eclipse中的facets是用于Java EE项目的特性和要求定义,并作为运行时配置的一部分。

Java facet在项目设置中显示了一个描述:

添加对使用Java编程语言编写应用程序的支持。

所有这些都是非常一般的信息,我无法想象这个facet可以为我做什么。已经有至少两个与Java相关的项目设置:

  • Java build path / Libraries / JRE System Library,它是默认的运行时库,当我从该项目执行类(test或main)时使用。
  • Java compiler,它指定(源和目标)Java兼容版本,并可以选择引用上面构建路径中的Java版本。
我发现,Java Facet 的唯一结果是当我设置不正确的版本时出现 版本不匹配错误
我使用的是 STS-3.6.3,项目是简单的 Maven Jar 项目,被 Maven War 项目引用。我在 Eclipse 中运行并调试 Tomcat 内的 War 项目,因此部分代码更改会进行热部署(我认为,Facets 对此没有影响)。
那么,为什么我应该保留 Java Facet 而不是简单地关闭它呢?

也问一个相反的问题:当你关闭它时会发生什么变化? - Gimby
1个回答

1
Facets自动化项目配置和部署的某些部分。例如,在动态Web项目中未将servlet添加到web.xml时通知您。像这样的东西。当您添加JPA facet时,eclipse将创建persistence.xml,并在创建实体类但未在持久性文件中进行配置时不断通知您。还有很多内容,将facet添加到项目中还会重新配置eclipse中项目结构的外观。基本上,它们正如您引用的那样:“添加使用Java编程语言编写应用程序的支持。”每个facet都会添加一些新内容,因此如果您想要更具体的答案,您必须回答有关特定facet的问题。如果您不知道它们对您有什么用-关闭它们。当您学到更多时,您始终可以添加它们。现实生活中的例子:添加JPA facet通过创建持久性文件搞乱了我的ObjectDB项目,结果我甚至不需要它。

我认为,通过前两个句子,我开始理解并测试了一个新的简单Java项目。它有4个Java选项(_Java build path_,_Java code style_等...),而 .project 文件只有 javanature。之后,我打开了包括 java facet 在内的facets - 除了 .project 中新增了一个 facet.core.nature 外,没有任何变化。然后我仅删除了 java facet,Java选项就消失了。看起来如果facets掌管着项目,那么java facet必须保留。如果我不需要java以外的其他facet,那么facet nature可以被删除吗? - vnov
你根本不需要使用facets。Facets就像是项目的额外功能,但如果你在配置项目时提供了运行环境和编译器,那么就可以直接开始了。你正在过度思考facets的问题。放弃它们,学习如何手动从头创建你的项目。 - zubergu
毕竟,我似乎无法删除facets。当我这样做时,我的war项目(在Servers视图中的J2EE Web模块)不再引用jar项目(在Servers中的J2EE实用程序jar)。因此,服务器无法启动。关键可能是Utility module facet(对于jar项目)已打开且无法关闭。而且,这个facet反过来需要Java facet,所以一切都应该保持不变。 - vnov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接