如何将本地jar文件(还不是Maven存储库的一部分)直接添加到项目的库源中?


当前回答

命令行:

mvn install:install-file -Dfile=c:\kaptcha-{version}.jar -DgroupId=com.google.code
-DartifactId=kaptcha -Dversion={version} -Dpackaging=jar

其他回答

当然,您可以将jar添加到该文件夹中。但也许这并不是你想要实现的。。。

如果您需要这些jar进行编译,请检查这个相关问题:我可以在不安装jar的情况下将它们添加到maven 2构建类路径吗?

此外,在任何人提出建议之前,不要使用系统范围。

一种方法是将其上传到您自己的Maven存储库管理器(如Nexus)。无论如何,拥有一个自己的存储库管理器是很好的做法。

我最近看到的另一个好方法是在构建生命周期中包含Maven安装插件:在POM中声明将文件安装到本地存储库。这是一个有点但很小的开销,并且不涉及手动步骤。

http://maven.apache.org/plugins/maven-install-plugin/install-file-mojo.html

我想要这样的解决方案-在pom文件中使用maven安装插件:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <version>2.5.2</version>
    <executions>
        <execution>
            <phase>initialize</phase>
            <goals>
                <goal>install-file</goal>
            </goals>
            <configuration>
                <file>lib/yourJar.jar</file>
                <groupId>com.somegroup.id</groupId>
                <artifactId>artefact-id</artifactId>
                <version>x.y.z</version>
                <packaging>jar</packaging>
            </configuration>
        </execution>
    </executions>
</plugin>

在这种情况下,您可以执行mvn初始化,jar将安装在本地maven repo中。现在,这个jar可以在这台机器上的任何maven步骤中使用(不要忘记在pom中使用<dependency></dependency>标记将这个依赖项作为其他maven依赖项)。也可以不将jar安装绑定到初始化步骤,而是绑定到您喜欢的任何其他步骤。

将JAR安装到本地Maven存储库中(通常位于主文件夹中的.m2),如下所示:

mvn install:install-file \
   -Dfile=<path-to-file> \
   -DgroupId=<group-id> \
   -DartifactId=<artifact-id> \
   -Dversion=<version> \
   -Dpackaging=<packaging> \
   -DgeneratePom=true

其中每一个都指:

<path to file>:要加载的文件的路径,例如→ c: \patcha-2.3.jar

<group id>:文件应在其下注册的组,例如→ com.google代码

<artifact-id>:文件的工件名称,例如→ 卡普查

<version>:文件的版本,例如→ 2.3

<package>:文件的打包,例如。→ 罐子

参考

Maven常见问题解答:我有一个jar,我想把它放到我的本地存储库中。我如何复制它?Maven安装插件用法:Install:Install文件目标

在Apache Maven 3.5.4中,我必须添加双引号。如果没有双重报价,这对我来说是行不通的。

例子:mvn安装:安装文件“-Dfile=jar文件的位置”“-DgroupId=组id”“-DastifactId=工件id”“-D版本=版本”“-Dpackage=包类型”