Maven项目远程导入Shaded Artifact异常问题咨询
问题原因与解决方案
为什么会出现这个问题?
这其实是因为Cloudera发布这个shaded artifact的方式和你预期的Maven classifier机制不匹配:
- Maven的
classifier字段是用来区分同一版本号下的不同构建产物(比如同一个5.8.1版本,可能有普通版、shaded版、源码包等)。但Cloudera并没有把这个shaded包作为5.8.1版本的classifier变体来发布,而是直接把-shaded作为版本号的一部分,生成了一个独立的artifact坐标:com.cloudera.api:cloudera-manager-api:5.8.1-shaded。 - 你最初用
classifier="shaded"配置时,Maven虽然尝试下载了文件,但这个文件在仓库里的实际坐标和Maven预期的不匹配,导致运行时无法正确加载类。而你手动调整.m2目录结构,相当于把文件移动到了对应5.8.1-shaded版本的路径下,让Maven能找到正确的artifact,所以问题解决了。
无需手动修改的正确配置方式
直接放弃classifier标签,把版本号设置为带-shaded的完整版本即可,Maven会自动从Cloudera仓库下载正确的artifact,完全不需要手动修改本地仓库:
<dependency> <groupId>com.cloudera.api</groupId> <artifactId>cloudera-manager-api</artifactId> <version>5.8.1-shaded</version> </dependency>
确保你的仓库配置保持不变:
<repository> <id>cdh.repo</id> <url>https://repository.cloudera.com/artifactory/cloudera-repos</url> <name>Cloudera Repository</name> </repository>
内容的提问来源于stack exchange,提问作者Edoardo Basili
相关产品推荐
相关产品推荐

