簡體   English   中英

如何在多模塊 maven 項目中單獨構建模塊?

[英]How to build a module separately in multimodular maven project?

根據官方 Maven 文檔中的 maven-ci-friendly文章,創建了這個多模塊項目(最小示例)。

共有三個模塊和一個根項目(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文件夾中創建。

我想選擇單獨構建立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


你能幫我解決這個問題嗎?

flatten-maven-plugin解決了這個問題。 感謝@khmarbaise,他在閱讀文檔的評論中提出了建議。

將插件添加到/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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM