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

Pra*_*ITI 1053 java libraries maven mvn-repo

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

Ali*_*ahi 1327

您可以直接添加本地依赖项(如包含propriatery库的build maven项目中所述),如下所示:

<dependency>
    <groupId>com.sample</groupId>
    <artifactId>sample</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/Name_Your_JAR.jar</systemPath>
</dependency>
Run Code Online (Sandbox Code Playgroud)

更新

在新版本中,此功能被标记为已弃用但仍在工作但尚未删除(您只需在maven启动期间在日志中看到警告).maven小组就此问题提出了一个问题:https://issues.apache.org/jira/browse/MNG-6523(您可以参与并说明为什么此功能在某些情况下有用).我希望这个功能仍然存在!

如果您问我,只要不删除该功能,我就会使用它来依赖于我的项目中只有一个不适合存储库的淘气jar文件.如果删除了这个功能,那么这里有很多好的答案我可以从以后选择!

  • 有时你想专门测试一个旧罐子,我觉得这个答案很适合.这是我需要的.Upvoted (45认同)
  • 上面的解决方案不再起作用,它返回:"xx.jar的'dependencies.dependency.systemPath'不应该指向项目目录中的文件"这已经在http://stackoverflow.com/questions/10935135中处理过/行家和 - 加 - 罐子到系统范围的 (36认同)
  • 尽管看起来很简单,但是这个解决方案存在的问题是yourJar.jar不会包含在应用程序的WAR文件中. (34认同)
  • 在这个答案中,不是`artifactId`和`groupId`错误的方法吗? (8认同)
  • 根据Maven docu(https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#System_Dependencies):重要说明:这已被标记为已弃用. (5认同)
  • **外部文件夹更好?**例如`<systemPath>`表示项目中的文件夹.将这些罐子放在项目外部的文件夹中会更有意义吗?有点像一个小的伪存储库.我假设Maven从这样的外部文件夹中提取了jar的副本. (2认同)
  • 这篇文章真的帮助我使用Spring Boot在jar中打包库.要在类路径上(在jar中的lib文件夹中)可用,我必须添加"lib"作为子文件夹:<systemPath> $ {project.basedir} /src/main/resources/lib/yourJar.jar </ systemPath>.这样,库直接打包在好的目标文件夹中. (2认同)
  • 这解释了为什么不使用 systemPath,并提供了很好的解决方案来自动将 jar 安装到本地存储库中:http://stackoverflow.com/questions/10935135/maven-and-adding-jars-to-system-scope (2认同)
  • 想知道向 Maven 项目添加多个 jar 文件(大约 50 个 jar 文件)的最佳方法是什么?检查了 addjars-maven-plugin 但它在 intellij 和 vscode 中都不适用于我 (2认同)

use*_*455 611

将JAR安装到本地Maven存储库中,如下所示:

mvn install:install-file \
   -Dfile=<path-to-file> \
   -DgroupId=<group-id> \
   -DartifactId=<artifact-id> \
   -Dversion=<version> \
   -Dpackaging=<packaging> \
   -DgeneratePom=true
Run Code Online (Sandbox Code Playgroud)

每个都指的是:

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

<group-id>:文件应在例如 - > com.google.code下注册的组

<artifact-id>:文件的工件名称,例如 - > kaptcha

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

<packaging>:文件的包装,例如 - > jar

参考

  • 答案没有提到自述文件,也没有提到罐子.但是,如果项目带来了罐子那么你也可以把回购放在这里提到的项目http://stackoverflow.com/a/36602256/1000011那么你就不需要README了,因为项目才能正常工作好像罐子在maven中央,没有任何额外的手动步骤. (15认同)
  • @opticyclic你的评论需要更多的赞成,或者这个答案需要编辑.对于那些没有意识到安装到本地Maven仓库的人来说,这是一个灾难的秘诀. (8认同)
  • 除了generatePom部分之外,在我的构建上安装的说明包含所有内容.这似乎至关重要. (7认同)
  • <path-to-file>是什么意思?像C:/Users/XXX/WorkspaceDocx/maven/src/main/resources/myJar.jar ......或者我们可以做$ {project.basedir} /src/main/resources/myJar.jar (3认同)
  • Maven的[安装第三方JAR指南](https://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html) (3认同)

JJ *_*man 125

首先,我想对这个匿名Stack Overflow用户的答案给予赞扬 - 我很确定我之前已经看过类似的答案 - 但现在我找不到了.

将本地JAR文件作为依赖项的最佳选择是创建本地Maven存储库.这样的存储库只不过是一个包含pom文件的正确目录结构.

对于我的例子:我的${master_project}位置上的主项目和子项目1已打开${master_project}/${subproject1}.

然后我在:创建一个Maven存储库 ${master_project}/local-maven-repo.

在位于子项目1的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>
Run Code Online (Sandbox Code Playgroud)

可以为任何其他存储库指定依赖项.这使您的pom存储库独立.例如,一旦所需的JAR在Maven central中可用,您只需要从本地仓库中删除它,它将从默认仓库中提取.

    <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.apache.felix.servicebinder</artifactId>
        <version>0.9.0-SNAPSHOT</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

最后但并非最不重要的事情是使用-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
Run Code Online (Sandbox Code Playgroud)

安装JAR文件后,可以将Maven存储库提交到代码存储库,整个设置与系统无关.(GitHub中的工作示例).

我同意让JAR承诺源代码回购不是一个好习惯,但在现实生活中,快速和肮脏的解决方案有时比完整的Nexus repo更好地托管一个你无法发布的JAR.

  • 由于`$ {project.parent.basedir}`似乎无法解决任何问题,所以我现在使用`$ {project.basedir} / ..`并能完美工作。 (3认同)
  • 如果要在pom.xml中执行此操作,请访问http://www.baeldung.com/install-local-jar-with-maven/ (2认同)
  • OP找不到的stackoverflow答案可能在这里:/sf/answers/1345867071/ (2认同)
  • 提示:请检查 $HOME/.m2/settings.xml ,避免 "local-maven-repo" 被 settings/mirrors/mirror `&lt;mirrorOf&gt;*&lt;/mirrorOf&gt;` 镜像。 (2认同)

Ant*_* O. 114

创建一个新文件夹,假设local-maven-repo您的Maven项目的根目录.

只需在您<project>的内部添加一个本地仓库pom.xml:

<repositories>
    <repository>
        <id>local-maven-repo</id>
        <url>file:///${project.basedir}/local-maven-repo</url>
    </repository>
</repositories>
Run Code Online (Sandbox Code Playgroud)

然后,对于要安装的每个外部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]
Run Code Online (Sandbox Code Playgroud)

  • 这是唯一正确的答案,因为它将在使用部署时正确创建您的仓库. (14认同)
  • 我们还需要将其添加为依赖项吗? (4认同)
  • 这个答案对我有用.对于共享项目,将repo放在项目目录中并添加到版本控制中可确保检出项目的任何人都不会缺少依赖项.如果您有很多依赖项,那么共享的远程仓库可能是更好的解决方案,否则将repo保留在项目目录中就完全没问题. (3认同)
  • 请注意,为此您可能需要添加 -Dpackaging=jar。否则,您会收到“工件信息不完整或无效:包装丢失”。 (3认同)
  • @user2748659 是的,如果在您的 CI 构建服务器中,文件夹 `local-maven-repo` 包含在源文件夹中(在本例中作为子文件夹) (2认同)
  • @RyanFasching是的,你仍然需要将依赖项添加到你的依赖项中 (2认同)
  • 请注意,您仍然需要添加该 jar 的依赖项。使用您在部署命令中使用的组 ID、工件 ID 和版本号。请注意,您可以随意组成任何组 ID、工件 ID 和版本号,只要它们在部署命令和 pom 依赖项部分中相互匹配即可。(这个答案对我来说效果很好。) (2认同)

sph*_*nks 34

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

        <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>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您可以执行mvn initialize,jar将安装在本地maven仓库中.现在这个jar在这台机器上的任何maven步骤中都可用(不要忘记将这个依赖项包含在带有<dependency></dependency>标记的pom中的任何其他maven依赖项中).也可以将jar install绑定到initializestep,但是你喜欢的任何其他步骤.

  • 这对我来说很好用,但前提是我必须在“ mvn package”之前运行“ mvn initialize”:我不能“ mvn initialize package”,否则它将尝试从中央存储库下载JAR。为什么是这样?我认为它将按顺序运行此目标/阶段。 (2认同)
  • 我试过各种方法,但最后我不得不求助于这个解决方案.主要原因是,我希望能够在离线模式下本地构建软件包.如果我将其声明为具有本地定义的存储库的依赖项,则这始终被视为另一个在线存储库,并且maven构建主张不对该工件进行罚款.此解决方案适用于所有情况. (2认同)
  • 我认为最好使用 **clean 阶段**,因为每次当我们使用 mvn package 时都会在不需要时执行 initialize 。最后如果我们只需要生成jar/war,我们可以直接使用**mvn clean package**。 (2认同)

Sat*_*uri 26

<dependency>
    <groupId>group id name</groupId>
    <artifactId>artifact name</artifactId>
    <version>version number</version>
    <scope>system</scope>
    <systemPath>jar location</systemPath>
</dependency>
Run Code Online (Sandbox Code Playgroud)

  • [`<scope> system`](https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#System_Dependencies)现已弃用. (6认同)
  • @MasterJoe2 正如[已接受的答案](/sf/answers/346898681/) [`install:install-file`](https://maven.apache.org/plugins/maven- install-plugin/usage.html#The_install:install-file_goal) 将工件添加到本地存储库并将其用作“正常”依赖项(默认范围为 `compile`)或使用 [项目内存储库解决方案](https: //stackoverflow.com/a/7623805/1744774)。 (2认同)

小智 17

依赖中的重要部分是: ${pom.basedir}(而不仅仅是 ${basedir})

<dependency>
    <groupId>org.example</groupId>
    <artifactId>example</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${pom.basedir}/src/lib/example.jar</systemPath>
</dependency>
Run Code Online (Sandbox Code Playgroud)


Jig*_*shi 15

是的,你可以拥有但不是好主意.

而是将所有这些罐子安装到maven repos

另见


fl0*_*l0w 10

真正快速而肮脏的方式是指向本地文件:

<dependency>
      <groupId>sample</groupId>  
       <artifactId>com.sample</artifactId>  
       <version>1.0</version> 
      <scope>system</scope>
      <systemPath>C:\DEV\myfunnylib\yourJar.jar</systemPath>
</dependency>
Run Code Online (Sandbox Code Playgroud)

然而,这只会存在于您的机器上(显然),为了共享它通常是有意义的使用正确的m2存档(nexus/artifactory)或者如果你没有任何这些或者不想设置一个本地maven结构化存档并在您的pom中配置"存储库":local:

<repositories>
    <repository>
        <id>my-local-repo</id>
        <url>file://C:/DEV//mymvnrepo</url>
    </repository>
</repositories>
Run Code Online (Sandbox Code Playgroud)

远程:

<repositories>
    <repository>
        <id>my-remote-repo</id>
        <url>http://192.168.0.1/whatever/mavenserver/youwant/repo</url>
    </repository>
</repositories>
Run Code Online (Sandbox Code Playgroud)

为此,使用basedir变量也可以使用相对路径:

<url>file:${basedir}</url>
Run Code Online (Sandbox Code Playgroud)


Puc*_*uce 9

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

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

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

  • 最终切换到gradle.它不起作用如果本地jar被定义为依赖项,maven将不会在解析依赖项之前执行插件,手动安装是不可避免的.发现了对这种情况的讨论:http://stackoverflow.com/questions/5951999/is-there-are-way-to-install-maven-dependencies-before-maven-attempts-to-resolve (3认同)

小智 9

在POM文件中添加您自己的本地JAR,并在maven构建中使用它.

mvn install:install-file -Dfile=path-to-jar -DgroupId=owngroupid -DartifactId=ownartifactid -Dversion=ownversion -Dpackaging=jar
Run Code Online (Sandbox Code Playgroud)

例如:

mvn install:install-file -Dfile=path-to-jar -DgroupId=com.decompiler -DartifactId=jd-core-java -Dversion=1.2 -Dpackaging=jar
Run Code Online (Sandbox Code Playgroud)

然后将它添加到POM中,如下所示:

在此输入图像描述


Yat*_*oel 8

第 1 步:在您maven-install-plugin的目标install-file中配置pom.xml

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <executions>
        <execution>
            <id>install-external-non-maven-jar-MWS-Client-into-local-maven-repo</id>
            <phase>clean</phase>
            <configuration>
                <repositoryLayout>default</repositoryLayout>
                <groupId>com.amazonservices.mws</groupId>
                <artifactId>mws-client</artifactId>
                <version>1.0</version>
                <file>${project.basedir}/lib/MWSClientJavaRuntime-1.0.jar</file>
                <packaging>jar</packaging>
                <generatePom>true</generatePom>
            </configuration>
            <goals>
                <goal>install-file</goal>
            </goals>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

确保file根据您的实际文件路径编辑路径(建议将这些外部非 Maven jar 放在某个文件夹中,比如说lib,将此lib文件夹放在您的项目中,以便使用项目特定的相对路径并避免添加系统具体的绝对路径。

如果您有多个外部 jar,只需<execution>对同一maven-install-plugin.

第 2 步:一旦您maven-install-pluginpom.xml文件中配置了如上所示的内容,您必须pom.xml像往常一样在您的文件中使用这些 jar :

    <dependency>
        <groupId>com.amazonservices.mws</groupId>
        <artifactId>mws-client</artifactId>
        <version>1.0</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

请注意,maven-install-plugin只会将您的外部 jar 复制到您的本地.m2Maven 存储库。就是这样。它不会自动将这些 jar 作为 Maven 依赖项包含到您的项目中。

这是一个小问题,但有时很容易错过。


Cep*_*pod 7

当然,您可以将jar添加到该文件夹​​.但也许它不是你想要实现的......

如果您需要这些jar进行编译,请检查以下相关问题:我可以将jar添加到maven 2 build classpath而不安装它们吗?

此外,在任何人建议之前,请不要使用系统范围.


小智 6

命令行 :

mvn install:install-file -Dfile=c:\kaptcha-{version}.jar -DgroupId=com.google.code
-DartifactId=kaptcha -Dversion={version} -Dpackaging=jar
Run Code Online (Sandbox Code Playgroud)


Sud*_*ara 6

我认为这个问题的一个更好的解决方案是使用maven-install-plugin在安装时自动安装文件。这就是我为我的项目设置的方式。

首先,添加路径(您存储本地 .jars 的位置)作为属性。

<properties>
    <local.sdk>/path/to/jar</local.sdk>
</properties>
Run Code Online (Sandbox Code Playgroud)

然后,在plugins编译时添加一个插件来安装jar。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <version>2.5.2</version>
    <executions>
        <execution>
            <id>1</id>
            <phase>initialize</phase>
            <goals>
                <goal>install-file</goal>
            </goals>
            <configuration>
                <groupId>com.local.jar</groupId> 
                <artifactId>appengine-api</artifactId>
                <version>1.0</version>
                <packaging>jar</packaging>
                <file>${local.sdk}/lib/impl/appengine-api.jar</file>
            </configuration>
        </execution>
        <execution>
            <id>appengine-api-stubs</id>
            <phase>initialize</phase>
            <goals>
                <goal>install-file</goal>
            </goals>
            <configuration>
                <groupId>com.local.jar</groupId>
                <artifactId>appengine-api-stubs</artifactId>
                <version>1.0</version>
                <packaging>jar</packaging>
                <file>${local.sdk}/lib/impl/appengine-api-stubs.jar</file>
            </configuration>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

最后,在依赖项中,您可以添加 jars

<dependency>
    <groupId>com.local.jar</groupId>
    <artifactId>appengine-api</artifactId>
    <version>1.0</version>
</dependency>

<dependency>
    <groupId>com.local.jar</groupId>
    <artifactId>appengine-api-stubs</artifactId>
    <version>1.0</version>
    <scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

通过像这样设置您的项目,即使您将其带到另一台计算机,该项目也将继续构建(假设它具有属性指定的路径中的所有 jar 文件local.sdk)。

对于groupId使用一个唯一的名称只是为了确保不存在冲突。

现在当你mvn installmvn test本地 jars 将被自动添加。


小智 6

将本地jar库、它们的sources和添加javadoc到 Maven 项目

如果您有jar带有库的预编译文件、它们的sourcesjavadoc,那么您可以install像这样将它们放到您的本地 Maven 存储库中:

mvn 安装:安装文件
    -Dfile=awesomeapp-1.0.1.jar \
    -DpomFile=awesomeapp-1.0.1.pom \
    -Dsources=awesomeapp-1.0.1-sources.jar \ 
    -Djavadoc=awesomeapp-1.0.1-javadoc.jar \
    -DgroupId=com.example \
    -DartifactId=awesomeapp \
    -Dversion=1.0.1 \
    -Dpackaging=jar

然后在你的项目中你可以使用这个库:

mvn install:install-file
    -Dfile=awesomeapp-1.0.1.jar \
    -DpomFile=awesomeapp-1.0.1.pom \
    -Dsources=awesomeapp-1.0.1-sources.jar \
    -Djavadoc=awesomeapp-1.0.1-javadoc.jar \
    -DgroupId=com.example \
    -DartifactId=awesomeapp \
    -Dversion=1.0.1 \
    -Dpackaging=jar

请参阅:maven-install-plugin用法。


或者您可以build自己使用这些库sourcesjavadoc使用maven-source-pluginmaven-javadoc-plugin,然后使用install它们。

示例项目:图书馆

<!-- com.example -->
<dependency>
    <groupId>com.example</groupId>
    <artifactId>awesomeapp</artifactId>
    <version>1.0.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

执行 Maveninstall目标:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
         http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <url>https://example.com/awesomeapp</url>

    <groupId>com.example</groupId>
    <artifactId>awesomeapp</artifactId>
    <name>awesomeapp</name>
    <version>1.0.1</version>
    <packaging>jar</packaging>

    <properties>
        <java.version>12</java.version>
    </properties>

    <build>
        <finalName>awesomeapp</finalName>
        <defaultGoal>install</defaultGoal>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <inherited>true</inherited>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>3.2.1</version>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals><goal>jar</goal></goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <inherited>true</inherited>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>3.2.0</version>
                <executions>
                    <execution>
                        <id>attach-javadocs</id>
                        <goals><goal>jar</goal></goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
Run Code Online (Sandbox Code Playgroud)

检查您的本地 Maven 存储库:

mvn install
Run Code Online (Sandbox Code Playgroud)

然后你可以使用这个库:

~/.m2/repository/com/example/awesomeapp/1.0.1/
 ?? _remote.repositories
 ?? awesomeapp-1.0.1.jar
 ?? awesomeapp-1.0.1.pom
 ?? awesomeapp-1.0.1-javadoc.jar
 ?? awesomeapp-1.0.1-sources.jar
Run Code Online (Sandbox Code Playgroud)


jor*_*oro 5

这是较新版本的简短语法:

mvn install:install-file -Dfile=<path-to-file>
Run Code Online (Sandbox Code Playgroud)

它在 JAR 由 Apache Maven 构建时起作用 - 最常见的情况。然后它将在 META-INF 目录的子文件夹中包含一个 pom.xml,默认情况下将读取该子文件夹。

来源:http : //maven.apache.org/guides/mini/guide-3rd-party-jars-local.html


Jea*_*ean 5

另一个有趣的情况是,您想在项目中使用私有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>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 打开.m2 / repository文件夹,然后将要导入的项目的目录结构复制到libs文件夹中。

例如,假设您要导入依赖项

<dependency>
    <groupId>com.mycompany.myproject</groupId>
    <artifactId>myproject</artifactId>
    <version>1.2.3</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

只需进入.m2 / repository,您将看到以下文件夹

com / mycompany / myproject / 1.2.3

复制您libs文件夹中的所有内容(同样,包括.m2 / repository下的文件夹),您就完成了。


Ant*_*ton 5

不是原始问题的答案,但可能对某人有用

没有正确的方法可以使用 Maven 从文件夹中添加多个 jar 库。如果只有很少的依赖项,则maven-install-plugin按照上面的答案中所述进行配置可能会更容易。

然而,对于我的特殊情况,我有一个lib包含 100 多个专有 jar 文件的文件夹,我必须以某种方式添加它们。对我来说,将我的Maven项目转换为Gradle.

plugins {
    id 'org.springframework.boot' version '2.2.2.RELEASE'
    id 'io.spring.dependency-management' version '1.0.8.RELEASE'
    id 'java'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
    mavenCentral()
    flatDir {
       dirs 'libs' // local libs folder
   }
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation('org.springframework.boot:spring-boot-starter-test') {
        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
    }
    
    implementation 'io.grpc:grpc-netty-shaded:1.29.0'
    implementation 'io.grpc:grpc-protobuf:1.29.0'
    implementation 'io.grpc:grpc-stub:1.29.0' // dependecies from maven central

    implementation name: 'akka-actor_2.12-2.6.1' // dependecies from lib folder
    implementation name: 'akka-protobuf-v3_2.12-2.6.1'
    implementation name: 'akka-stream_2.12-2.6.1'

 }
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

811454 次

最近记录:

5 年,10 月 前