java - maven本地jar - mvn install到本地仓库




如何将本地jar文件添加到Maven项目? (16)

如何直接在我的项目的库源中添加本地jar文件(尚未成为Maven存储库的一部分)?


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

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

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


也看看...

<scope>compile</scope>

Maven的依赖 。 这是默认的,但我发现在某些情况下,明确设置该范围也Maven在本地存储库中查找本地库。


创建一个新文件夹,让我们说你的Maven项目的根目录下的local-maven-repo

只需在您的pom.xml <project>中添加一个本地回购:

<repositories>
    <repository>
        <id>local-maven-repo</id>
        <url>file:///${project.basedir}/local-maven-repo</url>
    </repository>
</repositories>

然后,对于要安装的每个外部jar,请在项目的根目录下执行:

mvn deploy:deploy-file -DgroupId=[GROUP] -DartifactId=[ARTIFACT] -Dversion=[VERS] -Durl=file:./local-maven-repo/ -DrepositoryId=local-maven-repo -DupdateReleaseInfo=true -Dfile=[FILE_PATH]

另一个有趣的案例是,当你想在你的项目私人Maven罐子里。 您可能想要保留Maven的功能来解决传递依赖性。 解决方案相当简单。

  1. 在您的项目中创建一个文件夹
  2. 在您的pom.xml文件中添加以下行

    <properties><local.repository.folder>${pom.basedir}/libs/</local.repository.folder>
    </properties>
    
    <repositories>
       <repository>
            <id>local-maven-repository</id>
            <url>file://${local.repository.folder}</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
       </repository>
    </repositories>
    
  3. 打开.m2 / repository文件夹并将要导入的项目的目录结构复制到libs文件夹中。

假设你想要导入依赖关系

<dependency>
    <groupId>com.mycompany.myproject</groupId>
    <artifactId>myproject</artifactId>
    <version>1.2.3</version>
</dependency>

只要继续.m2 / repository ,你会看到下面的文件夹

COM / myCompany的/ myproject的/ 1.2.3

将所有内容复制到libs文件夹(再次,包括.m2 / repository下的文件夹)并完成。


在POM文件中添加自己的本地JAR,并在maven build中使用它。

mvn install:install-file -Dfile=path-to-jar -DgroupId=owngroupid -DartifactId=ownartifactid -Dversion=ownversion -Dpackaging=jar

例如:

mvn install:install-file -Dfile=path-to-jar -DgroupId=com.decompiler -DartifactId=jd-core-java -Dversion=1.2 -Dpackaging=jar

然后像下面这样将它添加到POM中:


在您的本地存储库上,您可以通过发出命令来安装您的jar

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

按照这个有用的link在mkyoung的网站上做同样的事情。 你也可以查看Maven指南


您可以直接添加本地依赖项(正如在包含propriatery库的构建maven项目中提到的),如下所示:

<dependency>
    <groupId>com.sample</groupId>
    <artifactId>sample</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/yourJar.jar</systemPath>
</dependency>

我在我的pom.xml中有一组相关的错误,结果是没有在pom.xml中指定这些依赖的版本,并且在父库中提到了这些版本。 出于某种原因,版本详细信息不与此回购协议同步。 因此,我手动输入使用标签的版本,它的工作就像一个魅力。 一点时间需要查找父母的版本,并在这里指定。 但是,这可以做到只显示artifactid错误和它工作的罐子。 希望这可以帮助某人。


我想要这样的解决方案 - 在pom文件中使用maven-install-plugin

        <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 initialize并将jar安装在本地maven仓库中。 现在这个jar在这个机器上的任何maven步骤中都可用(不要忘记在pom中使用<dependency></dependency>标签将这个依赖包括为任何其他maven依赖项)。 也可以绑定jar安装而不是initialize步骤,但是您需要其他任何步骤。




本答案只适用于ECLIPSE用户:

如果您使用Eclipse,请将jar放在lib /中,右键单击jar名称并单击“添加到构建路径”。 Eclipse将创建一个“引用库”并将它放在你的jar中

它为我解决了在程序中立即导入jar的问题


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

虽然共享回购是最好的答案,但如果因为某些原因无法完成此操作,那么嵌入该回收桶比本地回购更好。 仅限本地的回购内容会导致很多问题,尤其是随着时间的推移。



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

有关如何操作的详细信息,请参阅here 。 看看' 上传到远程仓库 '一节。


<dependency>
    <groupId>group id name</groupId>
    <artifactId>artifact name</artifactId>
    <version>version number</version>
    <scope>system</scope>
    <systemPath>jar location</systemPath>
</dependency>




mvn-repo