我知道这是主观性问题,它很可能会被关闭。但我不知道在哪里问这个问题得到答案。从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