Как получить имя цели в Maven2 Mojo во время выполнения

Для Maven2, как я могу получить имя цели, которая в настоящее время выполняется в методе выполнения Mojo? Именно мне нужно значение атрибута @goal внутри метода выполнения Mojo.


person Community    schedule 04.05.2009    source источник


Ответы (1)


public static String getGoalName(PluginDescriptor pluginDescriptor, String mojoClassName) {
        String goalName=null;
        List<MojoDescriptor> mojoDescriptorList = pluginDescriptor.getMojos();
        for (MojoDescriptor mojoDescriptor : mojoDescriptorList) {
            if (mojoDescriptor.getImplementation().equals(mojoClassName)) {
                goalName=mojoDescriptor.getGoal();
                break;
            }
        }
        return goalName;
    }

Здесь PluginDescriptor можно получить из pluginManager.getPluginDescriptorForPrefix("префикс-для-вашего-плагина"). PluginManager доступен как @component role="org.apache.maven.plugin.PluginManager"

person Community    schedule 04.05.2009
comment
Я с большим успехом использовал это решение на maven2, но когда я переключился на maven3, оно перестало работать. В maven3 он получает mojoDescriptorList для последней версии в репозитории maven, а не для той версии, которую я использую. Таким образом, если вы удалили цель в новейшей версии вашего плагина и используете более старый плагин, в mojoDescriptorList будет отсутствовать цель, которая все еще присутствует в старой версии плагина. - person Pylinux; 04.09.2012