我知道這是主觀性問題,它很可能會被關閉。但我不知道在哪裏問這個問題得到答案。從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
感謝大家誰讀,直到結束。
謝謝你的回答,但我已經停止了這個工作的想法 – 2013-11-23 20:49:20
好的,需要清理一下。我嘗試過使用相同的解決方案並失敗 - 在MavenProject實例中添加了配置,但似乎即使運行順序是正確的,也不會將它添加到Mojo中,就像它在早期實例化一樣。我將使用maven-executor項目,但會嘗試首先查看MavenSession和BuildPluginManager – tptak 2013-11-23 22:25:01