我知道这是一个主观问题,很可能会被关闭。但我不知道在哪里问这个问题才能得到答案。
maven android 插件有一件烦人的小事——它会修改原始清单文件,如果你在工作文件夹中运行 maven,你的 vcs 会建议你提交这些更改。
示例:如果我使用 beta 环境构建构建,我们有几个环境要运行,它将修改AndroidManifest.xml中的应用程序名称。
这可以通过复制原始清单并将副本引用到 android maven 插件来轻松解决。但是我决定让开发人员更容易,所以插件会自动执行此操作,除非开发人员指定他希望此更新在原始清单下完成。
修改功能很容易(复制文件并替换保持对文件的引用的属性),但问题是我需要将此属性传递给其他 mojos。
AbstractAndroidMojo
在没有execute
方法的抽象 mojo 中定义的属性。所有其他的 mojos 都扩展了这个类。定义如下所示:
/**
* The <code>AndroidManifest.xml</code> file.
*
* @parameter default-value="${project.basedir}/AndroidManifest.xml"
*/
protected File androidManifestFile;
我遵循了这个答案:
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
感谢所有阅读到最后的人。