【问题标题】:Maven 3 build antrun issue with parent/child modulesMaven 3 使用父/子模块构建 antrun 问题
【发布时间】:2012-03-23 16:31:44
【问题描述】:

我有一个带有多个子模块的父 POM。对于其中一个,我在构建中添加了一个 antrun 部分 - 目前这只是打印一个语句。该子模块依赖于整个集合中的其他模块(因此父模块有 8 个子模块 1 - 8,此模块(#5)依赖于 2 和 3)

antrun 部分的格式为:

<build>...
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.1</version>
            <executions>
                <execution>
                    <phase>validate</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>
                    <configuration>
                        <tasks>
                            <echo>*******************  Running generate </echo>
                     </tasks>
                    </configuration>
                </execution>
            </executions>
        </plugin>

    </plugins>
</build>

如果我在父模块下执行一个操作(例如,验证或安装),这些工作正常,并且正如预期的那样,echo 语句将为持有这个 antrun 任务的子 (#5) 运行。

但是,如果我转到子模块并从那里尝试 mvn validate,我会得到(传奇)

could not resolve dependencies for project...

失败。但是所有模块都存在于我的本地存储库中,并且它们是最新的。对于再次执行 mvn install 这个问题的通常解决方法并不能解决它。

对我来说这似乎是一个错误,除非其他人知道(到底是什么)出了差错。

克里斯

【问题讨论】:

  • 只是为了确认——如果你暂时注释掉这个插件,依赖错误就会消失吗?如果没有,那么它找不到哪些依赖项?
  • 是的,删除子pom中的条目,一切都很好
  • 它抱怨什么依赖?希望那里有线索..
  • 它抱怨父模块。这是另一个构建块所在的位置(例如,它包含 maven-compiler-plugin)。我当然不是夏洛克,但这对我没有帮助...:)

标签: java maven multi-module


【解决方案1】:

如果您在 maven 中调用子模块,则必须以特定方式进行。

 +-- root (pom.xml)
       +-- mod-child-1
       +-- mod-child-2
       +-- mod-child-3
       +-- mod-child-4
       ....

如果您喜欢这样做,例如对于 mod-child-3,您需要首先通过根目录执行 mvn 安装...之后您可以从多模块构建的根位置执行以下操作:

mvn -pl mod-child-3 package 

【讨论】:

  • 谢谢,但我不确定我是否完全理解你的意思。模块结构是扁平的,每个模块 inc 父级位于同一文件夹级别(未如上所示)这是绝对必需的,因为这些是组件,因此位于它们的 自己的 git 存储库中。它们不能嵌套。
  • 据我所知 git,您可以创建一个“超级模块”(根)并向其添加子模块(book.git-scm.com/5_submodules.html)。
【解决方案2】:

好的,这是我的错。我在父项目中添加了一个额外的 POM。我希望只是将常见的依赖项放在那里,以保持顶级 POM 与响应、分发内容等。

maven 似乎可以在本地使用它,但不会将这个仅 POM 的人工制品部署到 repo - 所以这从来没有在那里找到。困惑是为什么在从父级执行构建时这仍然有效。

不管怎样,它已经修复了——我已经将 dep 的东西折叠到我的单亲 POM 中,一切都很好。感谢大家的反馈。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-25
    • 1970-01-01
    • 2019-07-11
    • 2011-07-24
    • 2019-07-02
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    相关资源
    最近更新 更多