我是编程Web应用程序的新手,到目前为止,我正在使用带有Jetty服务器的eclipse / maven-setup来开发java web应用程序。
然而,我不明白的一件事是包括外部罐子的动态。许多教程和Q& A在SO上声称它足以将jar添加到WEB-INF / lib。其他解释我如何在pom.xml中将它们作为依赖项添加。我发现有时候第一个解决方案有效,有时候我还需要添加依赖项。我不知道为什么会这样。此外,在添加依赖项时,我已手动将外部.jars复制到与已经存在的存储库资源匹配的文件夹中。我无法相信这是正确的做法,但它一直在为我而努力。所以我的问题是:
奖金问题:为什么以下错误会出现在eclipse中?这些是指我在pom.xml中标记为依赖项的所有jar。 Web应用程序应该运行,尽管在一段时间后看似随机的不同运行时错误。现在重新启动服务器就可以修复它。
Description Resource Path Location Type
Missing artifact standard:standard:jar:1.1.2 pom.xml /WebApp line 1 Maven Dependency Problem
Missing artifact jstl:jstl:jar:1.2 pom.xml /WebApp line 1 Maven Dependency Problem
Missing artifact junit:junit:jar:4.8.2 pom.xml /WebApp line 1 Maven Dependency Problem
ArtifactDescriptorException: Failed to read artifact descriptor for javax.servlet:javaee-web-api:jar:6.0: ArtifactResolutionException: Failure to transfer javax.servlet:javaee-web-api:pom:6.0 from http://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced. Original error: Could not transfer artifact javax.servlet:javaee-web-api:pom:6.0 from/to central (http://repo.maven.apache.org/maven2): connection timed out to http://repo.maven.apache.org/maven2/javax/servlet/javaee-web-api/6.0/javaee-web-api-6.0.pom pom.xml /WebApp line 1 Maven Dependency Problem
Missing artifact com4j:com4j:jar:1.0 pom.xml /WebApp line 1 Maven Dependency Problem
WebApp Unknown Validation Message
WebApp Unknown Validation Message
WebApp Unknown Validation Message
(是的,共有8个错误,其中3个在eclipse中完全为空。
答案 0 :(得分:1)
根本没有任何区别。 Maven的pom.xml
有助于下载.m2/repository
位置的所有jar文件。这些罐子可用于不同的项目。您无需手动下载。但是,您第一次需要互联网连接才能下载所有jar文件。
在pom.xml
中,我们必须设置下面给出的依赖关系或者您要下载的任何版本的jar。如果您希望稍后更改版本(在以下情况下${spring.version}
,那么您只需要更改一个地方,并且随处可见。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
如果您不使用pom.xml
,那么在转移项目时,您必须多次通过网络传输所有jar文件。
Maven在多个项目中提供jar文件的可重用性。您无需在WEB-INF/lib
文件夹中拥有所有jar文件的深层副本。
编辑1
在第一次尝试中,任何项目都会从互联网上下载所有jar文件,并将所有这些jar文件存储在.m2/repository
。第二次在另一个项目中,当您尝试使用其他pom.xml
文件时,maven将尝试在本地(您的计算机).m2/repository
查找新项目pom.xml
中定义的任何依赖项的jars文件在.m2/repository
中,然后maven将不会尝试连接到互联网进行下载(因为所有内容都在.m2/repository
下载)。
如果pom.xml
文件找到新条目,则它将连接到互联网,然后在.m2/repository
编辑2
Maven首先检查本地存储库(.m2/repository
)的依赖关系,如果没有找到maven central repository(需要互联网连接),即使maven无法在中央存储库找到,那么我们必须告诉那些将事件放入pom.xml
文件以从其他位置下载。
对于Ex。
<repositories>
<repository>
<id>java.net</id>
<url>https://maven.java.net/content/repositories/public/</url>
</repository>
</repositories>
答案 1 :(得分:0)
maven是一个构建工具,它还管理您的项目依赖项。它还可以帮助您在Eclipse之外构建项目。您应该使用maven或直接在Eclipse中(或外部)管理项目依赖项。在后一种情况下,你可能不需要maven。
至于奖金问题,看起来有一些连接问题导致工件无法下载(connection timed out
) - 也许你的系统在代理服务器后面。