首页 文章

Maven:如何将依赖工件从本地存储库中提取(不解包)到单独的文件夹中

提问于
浏览
0

场景:我需要为另一个无法通过网络访问maven公共存储库的开发人员准备一个可用且简洁的本地存储库 . 但是我的计算机上的本地存储库大约是20G,其中包含与项目无关的大部分工件 .

AFAIK我可以使用 mvn dependency:resolve 仅将依赖项下载到新的本地存储库位置,但网络流量有限,我不想浪费时间等待下载完成 . 我google了一段时间,我尝试了 dependency:copy-dependencies 但它只复制了jar文件,不包括工件中的pom.xml文件和其他元文件 .

我知道这种解决方法有点违背了maven精神,但有时我们都需要离线工作 .

2 回答

  • 0

    如果你有一个所有 jar 的清单,你可以提取它们,暂时mv .m2,按照https://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html安装它们,给你的同事你当地的.m2并重新命名你的旧.m2 .

    虽然很少,但有时候您需要将第三方JAR放在本地存储库中以便在构建中使用,因为它们不存在于Maven Central等任何公共存储库中 . 必须将JAR放在正确位置的本地存储库中,以便Apache Maven正确地获取它 . 为了使这更容易,并且更不容易出错,我们在maven-install-plugin中提供了一个目标,这应该使这个相对无痛 . 要在本地存储库中安装JAR,请使用以下命令:

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

    如果还有一个pom文件,您可以使用以下命令安装它:

    mvn install:install-file -Dfile=<path-to-file> -DpomFile=<path-to-pomfile>
    

    使用maven-install-plugin的2.5版本,它会变得更好 . 如果JAR是由Apache Maven构建的,它将在META-INF目录的子文件夹中包含一个pom.xml,默认情况下将读取该文件夹 . 在这种情况下,您需要做的就是:

    mvn install:install-file -Dfile=<path-to-file>
    
  • 0

相关问题