簡體   English   中英

控制 Maven 插件每次執行繼承

[英]Controlling Maven plugin inheriting per execution

我有一個項目,它由一個父 POM 和一個模塊(我們稱之為“lib”)組成。 在父 POM 中,我定義了一個具有兩個執行的插件(以前只有一個)。 其中一個執行(新的)必須由模塊繼承,另一個不能。

所以目前的結構是這樣的:

  • toplevel/pom.xml(沒有父級;父級 POM 加上<module>lib</module>
  • 頂層/lib/pom.xml(父級: ../pom.xml

我曾經在插件配置中有<inherited>false</inherited> 這顯然不再起作用了。

我定義了一個配置文件build-this來調用構建,我想也許只是拆分插件配置,配置文件中的一個<plugin>塊與<inherited>false</inherited>和主<build>塊(在所有配置文件之外),但似乎<inherited>false</inherited>插件塊合並之后應用的,而不是之前。

如何通過執行控制插件 inheritance?


我有一個想法,它過於復雜並且會導致相當多的工作,但它可能會:

  • 將父 POM 移動到第二個模塊中
  • 創建一個新的頂級 POM,它使用<relativePath>parent/</relativePath> (而不是隱式<relativePath>../</relativePath> )來查找其父 POM
  • 僅將舊父模塊中的<modules>以及所有不得繼承的插件調用添加到頂級 POM 並將它們從新父模塊中刪除
  • <relativePath>../parent/</relativePath>添加到 lib 模塊的 POM 中,使其找到其父 POM

所以這:

  • 頂層/pom.xml(父級: parent/pom.xml ; <module>parent</module> <module>lib</module>
  • 頂層/lib/pom.xml(父級:../parent/ ../parent/pom.xml
  • 頂層/父級/pom.xml(無父級)

這看起來好聽嗎? 它仍然有點落后(特別是因為它會導致將新的頂級 POM 安裝到 Maven Central 中¹),因此仍然歡迎使用更好的方法來處理這個問題。

① 我可能會嘗試這個技巧或者更好的方法來避免這種情況……鑒於新的頂級 POM 沒有在任何地方被引用並且不會產生任何東西……哦,也許它會……嗯……解開這個看起來很有趣(這是為什么我更喜歡不太復雜的解決方案)

大多數插件都有<skip>參數。 如果您的插件是這種情況,您可以定義兩個屬性,如<skip.firstexecution><skip.secondexecution>並將它們放入相應執行的配置中,如<skip>${skip.firstexecution}</skip> .

然后,您可以通過將此屬性設置為true來跳過模塊中的執行。

暫無
暫無

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

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