【问题标题】:In maven multi-module project, how to package a single child-project?在maven多模块项目中,如何打包单个子项目?
【发布时间】:2011-05-30 08:44:58
【问题描述】:

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

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

here, in this question 描述的项目相同。

当我在超级项目级别调用mvn package 时,命令成功并且可以部署产生的战争。但是如果我尝试在子项目级别调用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

我的配置可能有什么问题?

【问题讨论】:

    标签: java maven maven-3


    【解决方案1】:

    当您从superproject 运行mvn package 时,它会在相应的target 文件夹中创建工件,但不会在您的本地存储库中安装它们。

    因此,当您在 subproject 上运行 mvn package(在兄弟 module 上具有 dependency)时,它会在您的本地存储库中查找 dependency,但没有找到它,因此尝试从配置的各种存储库下载它。

    一旦从superproject 成功运行mvn install,子项目上的mvn package 应该可以工作。

    【讨论】:

      【解决方案2】:

      您的 pom.xml 或 settings.xml 中有一个 (JBoss) 存储库条目。 要访问此存储库,需要对其进行身份验证。如果你用浏览器调用路径,你也会得到“403 Forbidden”。您必须添加 Jboss 的公共存储库。 (http://repository.jboss.org/)

      【讨论】:

        【解决方案3】:

        我花了很多时间来找出这种“错误”,感谢Raghuram,我在试图找到解决方案时很愚蠢,但实际上没有错误,只是因为我做了 mvn install in a依赖于其他模块的依赖的子模块,当我在父范围上运行 mvn install/package 时它应该可以正常工作。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-07-11
          • 1970-01-01
          • 2019-05-05
          • 1970-01-01
          • 1970-01-01
          • 2021-10-19
          • 1970-01-01
          • 2012-06-29
          相关资源
          最近更新 更多