在maven多模块项目中,如何打包单个子项目?

时间:2011-05-30 08:44:59

标签: java maven maven-3

我正在开发一个多模块maven项目。前一段时间,该项目被划分为子项目:

  • “Common”JAR项目
  • “用户”WAR项目,取决于Common

这与描述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

我的配置可能出现什么问题?

3 个答案:

答案 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时它应该可以正常工作。