为何先执行`mvn dependency:copy-dependencies`再`mvn package`会下载更多不同依赖?
Maven两步构建与单步构建的依赖下载差异排查求助
我有一个Maven管理的Java项目,要打包成Docker镜像的一部分。为优化Docker构建流程,我把依赖下载和编译打包拆成两个单独步骤,执行的命令是:
mvn dependency:copy-dependenciesmvn package
实际场景包含更多参数,排查问题时已简化为这两个命令。
现象详情:
- 两步流程中,第一个命令从Maven Central下载1080个文件;执行完第一个命令后再跑第二个,又额外下载232个文件。
- 全新环境中直接单独执行
mvn package,同样下载1080个文件,但其中约10%的文件和两步流程里第一个命令下载的不一样。
以下是过滤并排序后的下载日志差异片段(download_simple_12_sort.log是两步流程的日志,download_simple_2_sort.log是单独执行第二步的日志),能看到两类流程的下载共性与差异:部分依赖的jar+pom仅在两步流程中下载,部分依赖的pom都被下载但jar仅在其中一种流程中出现:
--- download_simple_12_sort.log 2023-11-28 14:37:53 +++ download_simple_2_sort.log 2023-11-28 14:37:58 @@ -1,5 +1,3 @@ -https://repo.maven.apache.org/maven2/backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.jar -https://repo.maven.apache.org/maven2/backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.pom https://repo.maven.apache.org/maven2/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar https://repo.maven.apache.org/maven2/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.pom https://repo.maven.apache.org/maven2/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3.jar @@ -63,6 +61,7 @@ https://repo.maven.apache.org/maven2/com/amazonaws/aws-java-sdk-augmentedairuntime/1.12.552/aws-java-sdk-augmentedairuntime-1.12.552.jar https://repo.maven.apache.org/maven2/com/amazonaws/aws-java-sdk-augmentedairuntime/1.12.552/aws-java-sdk-augmentedairuntime-1.12.552.pom https://repo.maven.apache.org/maven2/com/amazonaws/aws-java-sdk-autoscaling/1.12.552/aws-java-sdk-autoscaling-1.12.552.pom +https://repo.maven.apache.org/maven2/com/amazonaws/aws-java-sdk-autoscalingplans/1.12.552/aws-java-sdk-autoscalingplans-1.12.552.jar https://repo.maven.apache.org/maven2/com/amazonaws/aws-java-sdk-autoscalingplans/1.12.552/aws-java-sdk-autoscalingplans-1.12.552.pom https://repo.maven.apache.org/maven2/com/amazonaws/aws-java-sdk-backup/1.12.552/aws-java-sdk-backup-1.12.552.jar https://repo.maven.apache.org/maven2/com/amazonaws/aws-java-sdk-backup/1.12.552/aws-java-sdk-backup-1.12.552.pom @@ -589,6 +588,7 @@ https://repo.maven.apache.org/maven2/com/amazonaws/aws-java-sdk-workdocs/1.12.552/aws-java-sdk-workdocs-1.12.552.pom https://repo.maven.apache.org/maven2/com/amazonaws/aws-java-sdk-worklink/1.12.552/aws-java-sdk-worklink-1.12.552.jar https://repo.maven.apache.org/maven2/com/amazonaws/aws-java-sdk-worklink/1.12.552/aws-java-sdk-worklink-1.12.552.pom +https://repo.maven.apache.org/maven2/com/amazonaws/aws-java-sdk-workmail/1.12.552/aws-java-sdk-workmail-1.12.552.jar https://repo.maven.apache.org/maven2/com/amazonaws/aws-java-sdk-workmail/1.12.552/aws-java-sdk-workmail-1.12.552.pom
我怀疑下一步需要排查依赖树,但这超出了我的Maven知识范围,想请教可能导致该现象的原因,以及具体的排查方法。
内容的提问来源于stack exchange,提问作者Sparr
相关产品推荐
相关产品推荐

