繁体   English   中英

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

[英]Maven: How to extract (not unpack) dependent artifacts to a separate folder from local repository

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

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

我知道这种解决方法有点违背行家精神,但有时我们所有人都需要脱机工作。

如果您有所有jar的列表,则可以提取它们,暂时将其mv .m2安装,并按照https://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html进行安装,给您的同事您当地的.m2,然后重命名您的旧.m2。

尽管很少见,但有时您会需要将第3方JAR放到本地存储库中以在构建中使用,因为它们在Maven Central等任何公共存储库中都不存在。 必须将JAR放置在本地存储库中的正确位置,以便Apache Maven可以正确拾取JAR。 为了使此操作更容易且不易出错,我们在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>

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM