0

これは主観的な質問であることは承知しており、おそらくクローズされるでしょう。しかし、私は答えを得るためにこの質問をどこに尋ねればよいのかわかりません。

maven android プラグインには小さな厄介な点が 1 つあります。元のマニフェスト ファイルが変更され、作業フォルダーで maven を実行している場合、VC はこれらの変更をコミットするように提案しています。

例: ベータ環境でビルドする場合、実行する環境がいくつかあり、AndroidManifest.xmlのアプリ名が変更されます。

これは、元のマニフェストをコピーし、コピーへの参照を Android Maven プラグインに与えることで簡単に解決できます。しかし、開発者がこの更新を元のマニフェストの下で行うように指定した場合を除いて、プラグインが自動的にこれを行うように、開発者にとってより簡単にすることにしました。

機能を変更するのは簡単でした (ファイルをコピーし、ファイルへの参照を保持するプロパティを置き換えます) が、問題は、このプロパティを他の mojos に渡す必要があることです。

メソッドAbstractAndroidMojoを持たない抽象モジョで定義されたプロパティ。executeそして、他のすべてのモジョはこのクラスを拡張します。定義は次のようになります。

/**
 * 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;
        }
    }
}

しかし、残念ながらこれはうまくいきません。それを機能させるための明示的な方法はたくさんありますが、それらはすべて現在のモジョをすべて変更する必要があります。

答えがうまくいかない理由や、うまくいく方法を誰かが知っているのだろうか。

更新されたプラグインのコードは、 https ://github.com/emartynov/maven-android-plugin/tree/keep-android-manifest にあります。

最後まで読んでくださった皆様、ありがとうございました。

4

1 に答える 1