[英]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/facade
的mvn 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
模塊的階段之前,需要在本地存儲庫中有base
和core
,以便 maven 可以找到工件。 因此,這是 root 中的操作序列:
mvn install -pl modules/base,modules/core
(或只是mvn install
)mvn package -pl modules/facade
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.