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


当前回答

也许有人会感兴趣:https://github.com/Limraj/maven-artifact-generator

Console程序在本地存储库中生成maven工件,并根据jar的路径为pom.xml配置依赖项。您可以对一个文件执行此操作,但如果您有多个jar文件,则最有用。

路径jar:java-jar maven-artifact-generator-X.X.X.jar-p path_to_jars-g com.test-V 1.2.3-p jar

震击器:java-jar maven-artifact-generator-X.X.X.jar-f file_jar-g com.test-V 1.2.3-P jar

这将在本地maven存储库中生成一个工件,并在gen.log中为pom.xml生成依赖项。ArtifactId是jar文件的名称。

需要安装maven。在widnows 7和macOS X(unix/linux)上测试。

其他回答

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

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

真正快速而肮脏的方法是指向本地文件,请注意“system”现在已被弃用:

<dependency>
    <groupId>com.sample</groupId>  
    <artifactId>samplifact</artifactId>  
    <version>1.0</version> 
    <scope>system</scope>
    <systemPath>C:\DEV\myfunnylib\yourJar.jar</systemPath>
</dependency>

然而,这只会存在于您的机器上(显然),因为共享通常使用适当的m2存档(nexus/artifactory)是有意义的,或者如果您没有这些存档或不想设置本地maven结构化存档并在pom中配置“存储库”:

本地:

<repositories>
    <repository>
        <id>my-local-repo</id>
        <url>file://C:/DEV//mymvnrepo</url>
    </repository>
</repositories>

远程:

<repositories>
    <repository>
        <id>my-remote-repo</id>
        <url>http://192.168.0.1/whatever/mavenserver/youwant/repo</url>
    </repository>
</repositories>

对于此解决方案,还可以使用basedir变量创建相对路径:

<url>file:${basedir}</url>

首选方法是创建自己的远程存储库。

有关如何执行此操作的详细信息,请参阅此处。查看“上载到远程存储库”部分。

还可以看看。。。

<scope>compile</scope>

Maven依赖项。这是默认设置,但我发现在某些情况下,也会显式设置Maven的作用域,以便在本地存储库中查找本地库。

请注意,使用本地回购并不一定是个好主意。如果这个项目与其他人共享,那么当它不起作用时,其他人都会遇到问题和疑问,甚至在您的源代码管理系统中也无法使用jar!

尽管共享回购是最好的解决方案,但如果由于某种原因无法做到这一点,那么嵌入jar比本地回购要好。仅限本地的回购内容可能会导致很多问题,特别是随着时间的推移。