Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何确定本地lib目录中这个jar的maven坐标?_Java_Maven_Build_Jar - Fatal编程技术网

Java 如何确定本地lib目录中这个jar的maven坐标?

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内部并记下其中文件的日期(或日期范围)。你可

我是maven新手,正在将java web应用程序转换为maven(而不是由我的IDE管理)。我知道您可以在本地安装依赖项(第一选择)或将其声明为提供的依赖项(第二选择)。
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仅在编译时存在于类路径中,但在运行时它将由容器提供