2013-03-27 43 views
0

我知道這是主觀性問題,它很可能會被關閉。但我不知道在哪裏問這個問題得到答案。從mojo修改maven插件配置的正確方法

maven android插件有一個小問題 - 它修改原始清單文件,如果你正在工作文件夾中運行maven,你的vcs提議你提交這些修改。

示例:如果使用測試版構建構建版本,我們會運行多個環境,它將修改AndroidManifest.xml中的應用程序名稱。

這可以很容易地通過複製原始清單並將參考複製到android maven插件來解決。但是我決定讓開發者更容易,所以插件會自動執行此操作,除非開發人員指定他希望在原始清單下完成此更新。

很容易修改功能(複製文件並替換保留對文件的引用的屬性),但問題是我需要將此屬性傳遞給其他mojos。

在摘要mojo AbstractAndroidMojo中定義的屬性,它沒有execute方法。而所有其他mojos擴展這個類。該定義是這樣的:

/** 
* The <code>AndroidManifest.xml</code> file. 
* 
* @parameter default-value="${project.basedir}/AndroidManifest.xml" 
*/ 
protected File androidManifestFile; 

我跟着這個answer

private void updatePluginConfiguration (String newManifestFileValue) 
{ 
    for (Plugin plugin : project.getBuild().getPlugins()) 
    { 
     if (plugin.getArtifactId().equals("android-maven-plugin")) 
     { 
      Xpp3Dom configuration = (Xpp3Dom) plugin.getConfiguration(); 
      Xpp3Dom manifestFileParameter = configuration.getChild("androidManifestFile"); 
      if (manifestFileParameter == null) 
      { 
       manifestFileParameter = new Xpp3Dom("androidManifestFile"); 
       configuration.addChild(manifestFileParameter); 
      } 
      manifestFileParameter.setValue(newManifestFileValue); 
      break; 
     } 
    } 
} 

但不幸的是,這並不工作。有很多明確的方法可以使它工作,但所有這些方法都需要改變所有當前的mojos。

我想知道是否有人知道爲什麼答案不起作用或如何使其工作。

更新插件的代碼可以在這裏找到: https://github.com/emartynov/maven-android-plugin/tree/keep-android-manifest

感謝大家誰讀,直到結束。

回答

1

你是否在相同的生命週期階段運行你的目標?如果沒有,在你提供的文章中寫道:

注意:在當前階段結束時會丟棄任何配置更改。

要考慮的另一件事是:目標是否按照您的期望運行?看看這篇文章:http://www.mkyong.com/maven/maven-plugin-execution-order-in-same-phase/ - 也許是你遇到問題的插件排序。

要考慮的其他事情:或許你更喜歡更清潔的解決方案 - 將這種功能添加到android-maven-plugin中? Manfred Moser通常願意接受拉請求支持的提案;)

我會在我的插件中最合適地做同樣的事情。唯一的區別是我重複使用maven-dependency-plugin中的目標來複制自定義插件生命週期內的依賴關係。我正在嘗試爲InstallShield項目構建插件。

+0

謝謝你的回答,但我已經停止了這個工作的想法 – 2013-11-23 20:49:20

+0

好的,需要清理一下。我嘗試過使用相同的解決方案並失敗 - 在MavenProject實例中添加了配置,但似乎即使運行順序是正確的,也不會將它添加到Mojo中,就像它在早期實例化一樣。我將使用maven-executor項目,但會嘗試首先查看MavenSession和BuildPluginManager – tptak 2013-11-23 22:25:01