【问题标题】:Maven Dependencies or Eclipse Project FacetMaven 依赖项或 Eclipse 项目方面
【发布时间】:2018-10-28 10:55:55
【问题描述】:

我在 Eclipse (Oxygen) 中使用没有原型的 maven 创建了一个项目。我的问题是......使用Servlet API,如果我使用“项目属性>项目面”并添加“动态Web模块”,是否与在Servlet API的pom.xml中添加依赖项相同(javax.servlet -api)?

我是说……

项目属性 > 项目构面 > 动态 Web 模块 4.0(选中)

和...一样吗?

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>4.0</version>
  <scope>provided</scope>
</dependency>

Project Facets

Maven Dependency

【问题讨论】:

  • 你有什么尝试吗?添加构面时发现了什么?
  • 我猜它不会做同样的事情,因为我尝试按照你提到的那样创建一个项目,并选择了项目方面,更新了 maven 项目,但它没有向 pom.xml 添加任何 servlet 依赖项。我认为项目方面用于运行时配置。

标签: java eclipse maven servlets


【解决方案1】:

项目方面让 IDE 更好地了解您的项目,以便它可以为您执行一些特殊操作。例如,应用动态 Web 模块将使 eclipse 知道您的项目将在 Web 服务器上运行,因此您需要该方面将您的项目添加到 Web 服务器。当您将动态 Web 模块应用到您的项目时,eclipse 还假设您将在运行时获得 Web 服务器依赖项。构面保持在 IDE 级别。

虽然 maven 依赖项为您提供了项目中执行任务所需的库。它们在部署时保留在您的项目包中。

【讨论】:

  • "虽然 maven 依赖项为您提供了项目中执行任务所需的库。它们在部署时保留在您的项目包中。"除非您将依赖项标记为“已提供”,否则不会?
【解决方案2】:

而不是

 <dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0</version>
<scope>provided</scope>

转到项目属性>项目构面>单击项目构面右侧的运行时>检查该服务器>应用并关闭

enter image description here

【讨论】:

  • 问题是两者有什么区别。
  • 在 apache 服务器包或动态 Web 模块 javax servlet-api jar 如果您通过项目方面添加它是可用的,那么该 jar 将添加到您的项目中,如果我们放置 javax servlet-api 的依赖项,那么也该 jar 将添加到您的项目中所以两者都是一样的..
  • 貌似不一样。Dynamic Web Module > Project Facets > Runtime > Runtime 选择Apache Tomcat 9.0,这个会导入所有特定版本的tomcat库,版本有限制。 Maven 依赖,添加我想要的版本的 Servlet API。
猜你喜欢
  • 2011-04-15
  • 2011-05-14
  • 2017-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-20
  • 2016-12-03
相关资源
最近更新 更多