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

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


按如下方式将JAR安装到本地Maven存储库中:

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

Where: <path-to-file>  the path to the file to load
   <group-id>      the group that the file should be registered under
   <artifact-id>   the artifact name for the file
   <version>       the version of the file
   <packaging>     the packaging of the file e.g. jar

参考


您可以直接添加本地依赖项(正如在包含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>

首先,我想给这个答案的功劳归功于匿名的stackoverflow用户 - 我很确定我以前见过类似的答案 - 但现在我找不到它了。

将本地jar文件作为依赖项的最佳选择是创建本地maven存储库。 这样的回购只是pom文件的正确目录结构。

在我的示例中:我在${master_project}位置拥有主项目,并且子项目1位于${master_project}/${subproject1}

然后我在${master_project}/local-maven-repo创建mvn存储库

在位于subproject1的pom文件中,需要指定${master_project}/${subproject1}/pom.xml存储库,它将文件路径作为URL参数:

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

可以像任何其他存储库一样指定依赖关系。 这使您的pom存储库独立。 例如,一旦需要的jar在maven central中可用,你只需要从你的本地仓库中删除它,它将从默认的仓库中被取消。

    <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.apache.felix.servicebinder</artifactId>
        <version>0.9.0-SNAPSHOT</version>
    </dependency>

最后但并非最不重要的一件事是使用-DlocalRepositoryPath开关将jar文件添加到本地存储库,如下所示:

mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file  
    -Dfile=/some/path/on/my/local/filesystem/felix/servicebinder/target/org.apache.felix.servicebinder-0.9.0-SNAPSHOT.jar 
    -DgroupId=org.apache.felix -DartifactId=org.apache.felix.servicebinder 
    -Dversion=0.9.0-SNAPSHOT -Dpackaging=jar 
    -DlocalRepositoryPath=${master_project}/local-maven-repo

Onece jar文件被安装,这样mvn repo可以被提交给代码库,并且整个设置是独立于系统的。 (在github中的工作示例)

我同意让JAR致力于源代码回购并不是一个好的做法,但在现实生活中,快速和肮脏的解决方案有时比完全成熟的nexus回购更好,以承载一个无法发布的jar。

链接地址: http://www.djcxy.com/p/5047.html

上一篇: How to add local jar files to a Maven project?

下一篇: differences between dependencymanagement and dependencies in maven