Java 如何确定本地lib目录中这个jar的maven坐标?
我是maven新手,正在将java web应用程序转换为maven(而不是由我的IDE管理)。我知道您可以在本地安装依赖项(第一选择)或将其声明为提供的依赖项(第二选择)。Java 如何确定本地lib目录中这个jar的maven坐标?,java,maven,build,jar,Java,Maven,Build,Jar,我是maven新手,正在将java web应用程序转换为maven(而不是由我的IDE管理)。我知道您可以在本地安装依赖项(第一选择)或将其声明为提供的依赖项(第二选择)。groupId、artifactId和version是什么意思。但是,它没有解释如何确定罐子的精确坐标 例如,jar中没有pom.xml文件。当您在某个文件夹中有一个随机的jar文件(在本例中是servlet-api.jar)时,您必须仔细查看它是否与某个版本相同 One:查看jar内部并记下其中文件的日期(或日期范围)。你可
groupId
、artifactId
和version
是什么意思。但是,它没有解释如何确定罐子的精确坐标
例如,jar中没有pom.xml文件。当您在某个文件夹中有一个随机的jar文件(在本例中是servlet-api.jar)时,您必须仔细查看它是否与某个版本相同 One:查看jar内部并记下其中文件的日期(或日期范围)。你可能会注意到里面有哪些文件。你可能需要那个细节 Two:去你能找到罐子的地方。我喜欢你可以输入jar名称的地方。“servlet api”。我在大约10秒内找到了这个:
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifact>servlet-api</artifactId>
<version>6.0.36</version>
</dependency>
org.apache.tomcat
)
- 然后,您可以下载您认为匹配的一个,并查看其中的日期是否匹配
- 从这里开始基本上就是侦探工作。您可能会找到带有maven“坐标”的确切jar,而您可能不会
阅读其他答案提醒我,对于JavaEEJAR,我发现最好使用通用版本来构建应用程序。对maven范围使用“provided”。容器将提供真正的jar,如果它不是完全标准的,您将不会使用非标准部件,因为您的构建使用了通用版本
因此,例如,您可以使用以下内容进行构建:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
javax.servlet
servlet api
2.4
假如
Maven工件(JAR文件)将位于
~/.m2/repository/org/apache/tomcat/artifact/version/
如果我没记错的话,servlet-api.jar文件将位于~/.m2/repository/javax/servlet/servlet-api/2.5/中,因为您使用的是servlet规范的2.5版
然而,servlet api始终由应用程序容器提供,因此在Maven POM中是“提供”类型的依赖项 我通常做的是查找jar,例如:servlet-api.jar。您还可以执行完全限定的类名搜索,例如,如果您知道jar中有一个类javax.servlet.http.HttpServletRequest,您可以搜索fc:javax.servlet.http.HttpServletRequest,它将列出包含该类的所有jar
但是,请记住servlet-api.jar的情况——它不应该捆绑到war/EAR中,因为它应该由容器(在本例中是tomcat)提供。通常,创建JavaEE项目时的最佳实践是在提供的范围中包含对javax.servlet:servlet api:2.5(或容器支持的其他版本)的依赖关系。因此,JAR仅在编译时存在于类路径中,但在运行时它将由容器提供