【问题标题】:How to build a module separately in multimodular maven project?如何在多模块maven项目中单独构建模块?
【发布时间】:2021-03-23 14:38:43
【问题描述】:

根据官方 Maven 文档中的 maven-ci-friendly 文章,创建了这个多模块项目 (minimal example)。

共有三个模块和一个根项目(inception):

/inception
  /modules
    /base     (common parent of 'core' and 'facade')
    /core     (child of 'base')
    /facade   (child of 'base' having 'core' as a dependency)

inception 执行mvn package 可以正常工作 - 所有 3 个*.jar 工件都在相应的target forlders 中创建。

我想选择单独构建facade 模块。 不幸的是,来自modules/facademvn package 无法收集依赖项并失败并出现错误

[ERROR] Failed to execute goal on project sample-facade:
        Could not resolve dependencies for project sample.group:sample-facade:jar:0.0.1:
        Failed to collect dependencies at sample.group:sample-core:jar:0.0.1: 
        Failed to read artifact descriptor for sample.group:sample-core:jar:0.0.1:
        Could not transfer artifact sample.group:sample-base:pom:${revision}

表面问题是${revision}没有被解析成0.0.1


您能帮我解决这个问题吗?

【问题讨论】:

标签: java maven dependencies multi-module revision


【解决方案1】:

flatten-maven-plugin 解决了这个问题。 感谢@khmarbaise,他在 cmets 中建议阅读 the docs 到最后。

将插件添加到/modules/base/pom.xml 解决了单独构建子模块的问题:

 <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>flatten-maven-plugin</artifactId>
    <version>1.2.5</version>
    <configuration>
      <updatePomFile>true</updatePomFile>
      <flattenMode>resolveCiFriendliesOnly</flattenMode>
    </configuration>
    <executions>
      <execution>
        <id>flatten</id>
        <phase>process-resources</phase>
        <goals>
          <goal>flatten</goal>
        </goals>
      </execution>
      <execution>
        <id>flatten.clean</id>
        <phase>clean</phase>
        <goals>
          <goal>clean</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

facade 模块上开始一个阶段之前,需要在本地存储库中有basecore,这样maven 才能找到工件。因此,这是 root 中的操作序列:

  • mvn install -pl modules/base,modules/core(或只是mvn install
  • mvn package -pl modules/facade

【讨论】:

  • 我推荐这些文档,因为我已经编写了它们... ;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-22
  • 2018-09-17
  • 1970-01-01
  • 2014-09-14
  • 2014-03-03
  • 2019-07-11
  • 2019-05-21
相关资源
最近更新 更多