我正在开发一个多模块maven项目。前一段时间,该项目被划分为子项目:
这与描述here, in this question的项目相同。
当我在超级项目级别调用mvn package
时,命令会成功,并且可以部署生成的war。但是如果我尝试在子项目级别调用mvn package
,命令就会失败。
[ERROR] Failed to execute goal on project User: Could not resolve
dependencies for project xxx.xxx:User:war:0.0.1-SNAPSHOT: Failed
to collect dependencies for [xxx.xxx:Common:jar:0.0.1-SNAPSHOT (compile), ...
显然maven正试图从远程仓库下载我自己的项目(Common)...
Downloading: http://repository.jboss.org/maven2/xxx/xxx/Common/0.0.1-SNAPSHOT/maven-metadata.xml
Downloading: http://download.java.net/maven/glassfish/xxx/xxx/Common/0.0.1-SNAPSHOT/maven-metadata.xml
[WARNING] Could not transfer metadata xxx.xxx:Common:0.0.1-SNAPSHOT/maven-metadata.xml from/to jboss (http:/
/repository.jboss.org/maven2): Access denied to: http://repository.jboss.org/maven2/xxx/xxx/common/0.0.1-SNA
PSHOT/maven-metadata.xml
我的配置可能出现什么问题?
答案 0 :(得分:2)
当您从mvn package
运行superproject
时,它会在相应的target
文件夹中创建工件,但不会 安装 它们在您的本地存储库中。
因此,当您在mvn package
subproject
上运行dependency
时,它会在同级module
上有dependency
,它会在您当地寻找mvn install
存储库,找不到它,因此尝试从配置的各种存储库下载它。
从superproject
成功运行mvn package
后,子项目上的{{1}}应该有效。
答案 1 :(得分:0)
您的pom.xml或settings.xml中有一个(JBoss)存储库条目。 要访问此存储库,需要对其进行身份验证。如果您使用浏览器调用路径,则还会显示“403 Forbidden”。您必须添加Jboss的公共存储库。 (http://repository.jboss.org/)
答案 2 :(得分:0)
我花了很多时间找出这种'错误',感谢Raghuram,在尝试找到解决方案时我很傻但实际上没有错误,只因为我做了mvn安装在一个依赖于其他模块的依赖关系的子模块中,当我在父作用域上运行mvn install / package时它应该可以正常工作。