maven - 如何要求 maven-assembly-plugin 跳过(忽略)丢失的资源而不停止构建?
问题描述
我正在尝试构建 Metasfresh ERP 后端(服务器端)套件https://github.com/metasfresh/metasfresh/tree/master/backend我的 maven 构建在项目https://github.com/metasfresh/metasfresh停止/tree/master/backend/de.metas.adempiere.adempiere/migration因为缺少 maven-assembly-plugin 所需的资源。
具体来说,Maven日志说:
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ de.metas.adempiere.adempiere.migration-sql ---
[INFO] Building jar: C:\Workspace-Brugere\metasfresh\backend\de.metas.adempiere.adempiere\migration\target\de.metas.adempiere.adempiere.migration-sql-10.0.0.jar
[INFO]
[INFO] --- maven-assembly-plugin:3.0.0:single (make-postgresql-assembly) @ de.metas.adempiere.adempiere.migration-sql ---
Downloading: https://repository.apache.org/snapshots/de/metas/metasfresh-assemblies/maven-metadata.xml
Downloading: https://repo.metasfresh.com/repository/mvn-master/de/metas/metasfresh-assemblies/maven-metadata.xml
Downloaded: https://repo.metasfresh.com/repository/mvn-master/de/metas/metasfresh-assemblies/maven-metadata.xml (8.7 kB at 5.5 kB/s)
Downloading: https://repo.metasfresh.com/repository/mvn-master/de/metas/de.metas.parent.general/5.159.1-21669+master/de.metas.parent.general-5.159.1-21669+master.pom
Downloading: https://repo.metasfresh.com/repository/mvn-master/de/metas/de.metas.parent.general/5.159.1-21672+master/de.metas.parent.general-5.159.1-21672+master.pom
Downloading: https://repo.metasfresh.com/repository/mvn-master/de/metas/de.metas.parent.general/5.159.1-21673+master/de.metas.parent.general-5.159.1-21673+master.pom
...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] de.metas.parent .................................... SUCCESS [ 2.944 s]
...
[INFO] de.metas.monitoring ................................ SUCCESS [ 10.034 s]
[INFO] de.metas.adempiere.adempiere.patched-ecs ........... SUCCESS [ 13.617 s]
[INFO] de.metas.adempiere.adempiere.migration-sql ......... FAILURE [ 36.118 s]
[INFO] metasfresh-report .................................. SKIPPED
...
[INFO] metasfresh-dist-dist ............................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 04:36 min
[INFO] Finished at: 2020-12-25T19:01:04+02:00
[INFO] Final Memory: 146M/1207M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:3.0.0:single (make-postgresql-assembly)
on project de.metas.adempiere.adempiere.migration-sql:
Execution make-postgresql-assembly of goal org.apache.maven.plugins:maven-assembly-plugin:3.0.0:single failed:
Plugin org.apache.maven.plugins:maven-assembly-plugin:3.0.0 or one of its dependencies could not be resolved:
Failed to collect dependencies at org.apache.maven.plugins:maven-assembly-plugin:jar:3.0.0 ->
de.metas:metasfresh-assemblies:jar:5.159.1-21669+master:
Failed to read artifact descriptor for de.metas:metasfresh-assemblies:jar:5.159.1-21669+master:
Could not find artifact de.metas:de.metas.parent.general:pom:5.159.1-21669+master in metasfresh-repo
(https://repo.metasfresh.com/repository/mvn-master/) -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
我检查了,maven-assembly-plugin 从
https://repo.metasfresh.com/repository/mvn-master/de/metas/metasfresh-assemblies/maven-metadata.xml
它有 5.1159.1-21669+master 的条目:
<version>5.159.1-21667+master</version>
<version>5.159.1-21668+master</version>
<version>5.159.1-21669+master</version>
<version>5.159.1-21670+master</version>
<version>5.159.1-21671+master</version>
<version>5.159.1-21672+master</version>
<version>5.159.1-21673+master</version>
<version>5.159.1-21674+master</version>
但链接https://repo.metasfresh.com/repository/mvn-master/de/metas/de.metas.parent.general/5.159.1-21669+master/de.metas.parent.general没有条目-5.159.1-21669+master.pom
所以 - 这个项目很奇怪。也许这个开源项目中存在一些行政/商业/组织问题,他们故意保留禁止一些必要的文件。
我的问题是 - 我怎样才能让 maven 插件跳过丢失的资源?看看发生了什么?
也许我可以下载 maven-metadata.xml,删除没有版本的条目,然后希望 maven-assembly-plugin 使用本地(手工制作的)mave-metadata.xml?
解决方案
de.metas:metasfresh-assemblies:jar:5.159.1-21669+master
的 POM 包含:
...
<parent>
<groupId>de.metas</groupId>
<artifactId>de.metas.parent.general</artifactId>
<version>5.159.1-21669+master</version>
...
</parent>
...
但是,正如您发现的那样,没有这样的工件。
这也不是资源(如 中src/[main|test]/resources
),而是父 POM。您不能“跳过”父 POM,即如果父 POM 不可用,您就无法构建子 POM。如果超类在类路径中不可用,这就像尝试编译子类一样。
推荐阅读
- ios - SwiftUI:使用 Picker(分段)更改 ForEach 源或获取请求
- python - Pytest: 27 Assertion Error: 如何正确格式化输入和输出参数
- r - GGPlot 不会显示超过 3 种颜色
- bash - 在 AWS CLI 命令中使用 bash 变量作为参数
- python - 按地标拆分 KML 文件
- python - 如何提取文本文件的某些部分?
- mysql - LARAVEL 使用功能测试 phpunit 转换列 JSON
- r - 如何从r中矩阵的下三角形获取元素顺序信息
- google-apps-script - 即使触发器存在,getUserTriggers() 也会返回空数组
- mysql - MySQL将值集重复的第一次出现保持为0