
在Maven的默认配置下,我们无需手动将本地的jar包添加到仓库中,因为pom.xml中的依赖会自动从中央仓库下载到本地仓库。然而,公司内部的配置有所不同,如果本地仓库中没有所需的jar包,系统会尝试从setting文件指定的url下载。如果该url中的jar包版本较旧,我们可能需要更新至最新版本。
例如,假设我们已下载了lucene-queryparser-4.6.1.jar,我们可以通过以下步骤将它添加到本地仓库:
1. 打开命令提示符(cmd),导航至该jar包所在的目录。
2. 执行如下命令:
mvn install:install-file -Dfile=lucene-queryparser-4.6.1.jar -DgroupId=org.apache.lucene -DartifactId=lucene-queryparser -Dversion=4.6.1 -Dpackaging=jar
请注意,对于不同的jar包,需要替换相应的参数值。
我尝试过另一种方法:创建一个空的pom文件,并在其中添加所需的jar包依赖。然而,这种方法无法直接将jar包下载到本地仓库。原因是,虽然pom文件定义了依赖关系,但在实际应用中未使用到这些依赖时,Maven命令不会执行下载操作。
为了更好地理解-DgroupId和-DartifactId的作用,它们实际上是指定了jar包在repository中的安装路径,帮助项目知道去哪里寻找特定的jar包。例如:
mvn install:install-file -Dfile=freemarker-2.3.13.jar -DgroupId=freemarker -DartifactId=freemarker -Dversion=2.3.13 -Dpackaging=jar
此命令将jar包安装到了repository\freemarker\freemarker\2.3.13目录下。若在pom文件的dependency部分也写明这些信息,则可以从对应的目录中找到该jar包。
对于存在classifier的jar包,如org.apache.hadoop hadoop-hdfs 2.2.0 tests,可以通过增加-D参数来处理:
mvn install:install-file -Dfile=hadoop-hdfs-2.2.0-tests.jar -DgroupId=org.apache.hadoop -DartifactId=hadoop-hdfs -Dversion=2.2.0 -Dclassifier=tests -Dpackaging=jar
这样做的目的是确保在正确的分类下找到所需的jar包。