【问题标题】:"mvn clean generate-sources" could not resolve dependencies“mvn clean generate-sources”无法解析依赖关系
【发布时间】:2012-10-08 05:03:16
【问题描述】:

那里

我遇到了一个奇怪的问题。我有一个用 Maven 构建的多模块企业项目。我像这样设置项目层次结构

parentPom
   --MyEar (packaging ear)
   --MyUtilJar (packaging jar)
   --MyEJB (packing ejb)
   --MyWeb (packaging war)

在MyEJB项目中,pom.xml实际上是把apt插件绑定到generate-sources阶段来生成一些java代码。 MyEJB 依赖于 MyUtilJar 项目。

我的问题是,当我执行 mvn clean compile 时,一切正常。但是,如果我改为执行 mvn clean generate-sources,它会抛出错误,抱怨它无法解决工件 mygroup:MyUtilJar:jar:1.0 的依赖关系。

我该如何解决这个问题?

【问题讨论】:

    标签: maven


    【解决方案1】:

    为了使 generate-sources 工作,您需要在一个存储库中拥有所有依赖项 - 您的本地依赖项或远程依赖项。仅将依赖项放在需要它的文件夹附近是行不通的。

    尝试构建和安装 until 将其放入本地存储库,然后运行 ​​generate-sources。

    【讨论】:

    • 感谢您的回复。我有点理解你的意思,但我的问题是整个项目是一个多模块的企业项目。我们在父项目级别编译/打包项目。如果我有MyEJB项目所依赖的3个jar模块项目,你是说我要把这3个jar项目一个一个编译,打包安装到本地仓库?完成所有这些步骤后,我可以在父级运行 generate-sources 阶段吗?这听起来真的很麻烦而且违反直觉。
    • 我不这么认为。父 pom 将其他 pom 称为模块,对吗?如果是这样,您应该能够 mvn:install parent 然后执行 generate-sources。但也许我假设太多了。是您刚刚将代码移动到新位置并试图让任何 mvn 命令工作,还是您成功构建了代码但无法让 generate-sources 工作?
    • 明白。但我的观点是安装阶段在生成源阶段之后。因此,如果我在父级执行 mvn install,则所有子模块的 generate-sources 阶段已经执行,编译/打包阶段也是如此。听起来很奇怪,我们必须先执行较晚的阶段,以便我们可以再次执行较早的阶段。您的解决方案可能会奏效,但并不理想。打包/安装整个项目需要1个多小时。我正在寻找的是在 generate-sources 阶段生成源代码,而无需先编译/打包/安装整个项目。
    • 我试图说明的另一点是 mvn clean compile 工作正常。尚未执行“安装”阶段。为什么“编译”阶段在 MyUtilJar 不在本地存储库中时可以正常工作?
    • 运行mvn install 的需要通常是一种糟糕的构建气味。如果无法使用以下命令序列进行构建,则 Maven 构建不遵循 Maven 方式mvn clean; rm -rf ~/.m2/repository; mvn verify 我选择了确定性的序列。如果您需要最后一个命令为mvn install,这并没有错……只要您了解为什么选择强制安装阶段,这就是实用的。
    猜你喜欢
    • 2017-01-05
    • 2019-12-24
    • 2017-12-16
    • 2014-05-06
    • 2018-12-15
    • 2022-01-17
    • 2020-08-16
    • 2019-12-19
    • 2018-11-21
    相关资源
    最近更新 更多