如何将第三方jar包添加到本地Maven仓库?

18

我有一个包含4个罐子的图书馆:

matlabcontrol-4.1.0.jar
matlabcontrol-4.1.0-javadoc.jar
matlabcontrol-4.1.0-sources.jar
matlabcontrol-demo-4.1.0.jar

我该如何将它们添加到本地仓库中,以便Maven知道源代码和Javadoc的位置?

这里的文档http://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html非常简洁,没有回答这个问题。


2
文档清楚地说明了如何添加它,您不理解的是哪一部分呢? - Juned Ahsan
2个回答

31
文档明确说明了方法。将你的 matlabcontrol-4.1.0.jar 文件放在 C:> 位置。然后将你的 cmd 命令行切换到 C:> 目录,并运行以下命令。
mvn install:install-file -Dfile=matlabcontrol-4.1.0.jar -DgroupId=org.matlabcontrol \
    -DartifactId=matlabcontrol -Dversion=4.1.0 -Dpackaging=jar

如果你这样做,就可以通过依赖项访问你的jar文件, 比如:

 <dependency>
        <groupId>org.matlabcontrol</groupId>
        <artifactId>matlabcontrol</artifactId>
        <version>4.1.0</version>
 </dependency>

1
groupid和artifactid的目的是什么? - Timeless
@Masud 我使用相同的过程安装了jar包,我可以在本地maven仓库中看到最新的jar包,但是新的jar包没有反映在maven项目中...你能给我一些建议吗? - dom
@Timeless groupId和artifactId是Maven用来查找所需库的标识(有点像类名和包名,但是针对jar文件)。粗略地说,groupId标识artifact所属的项目。导入自定义jar时,您可以自己编写一个。您可以使用组织的网站,例如com.mathwork.matlab,或者在jar中使用Java包名称,例如org.matlab.control。无论您选择什么,都不重要,只要它是唯一的。 - Laurent Bourgault-Roy
1
如果您有可用的pom文件,您可能还想添加带有“-DpomFile = <path-to-pom.xml>”的pom。 - Bill Comer

6

命令行也可以指定分类器。请参见http://maven.apache.org/plugins/maven-install-plugin/install-file-mojo.html#classifier

Javadoc和源代码是具有相同POM分类器的工件。

例如:

安装主要工件

mvn install:install-file -Dfile=matlabcontrol-4.1.0.jar 
   -DgroupId=matlab -DartifactId=matlab -Dversion=4.1.0

使用分类器javadoc安装javadoc:

 mvn install:install-file -Dfile=matlabcontrol-4.1.0.jar 
   -DgroupId=matlab -DartifactId=matlab -Dversion=4.1.0 -Dclassifier=javadoc

今天我发现有人投票反对我的回答,但他/她没有留下评论。如果能添加一条评论就好了,因为如果有什么不对的地方,我想纠正它,并从中学到一些东西。 - René Link
groupid和artifactid的目的是什么? - Timeless
@Timeless,这里的目的是为了在存储库中更好地对您的项目进行分类,以及其他项目。请查看以下链接:https://maven.apache.org/guides/mini/guide-naming-conventions.html 和 https://dev59.com/mnA75IYBdhLWcg3ws7Yh 以及 https://dev59.com/fWct5IYBdhLWcg3wjd-H#12020832。 - n3k0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接