MavenProject setValue не изменить pom.xml

У меня проблема с классом MavenProject. Я делаю плагин Maven, и я использую этот класс, чтобы получить свойства POM, такие как groupId и версия. Каждый раз, когда я использую свой плагин, чтобы установить что-то, например:

public class versionGoal extends AbstractMojo {

/**
 * @parameter default-value="${project}"
 */
private MavenProject mavenProject;

/**
 * @throws org.apache.maven.plugin.MojoExecutionException
 */
public void execute() throws MojoExecutionException
{
    this.mavenProject.setVersion("9.0.0");
}

}

после выполнения, например, на этапе тестирования ничего не меняется. Но если я попытаюсь добавить строку кода: mavenProject.getVersion() после строки this.mavenProject.setVersion("9.0.0") вернет мне "9.0.0", но pom.xml не изменится.

Наверное, это какая-то глупая ошибка, я знаю:) И я знаю, что существует плагин версии-maven, но я не хочу его использовать.

Спасибо за помощь!

1 ответ

Решение

Вы просто меняете данные в памяти:

Вы должны использовать ModelWriterчтобы сохранить изменения или дополнения.

ПРИМЕЧАНИЕ: это, вероятно, очень плохая практика, если вы меняете такие вещи, какversionесли вы не очень конкретны о поведении в качестве побочного эффекта

Записывает предоставленную модель в указанный файл.

void    write(File output, Map<String,Object> options, Model model)

Записывает предоставленную модель в указанный поток байтов.

void    write(OutputStream output, Map<String,Object> options, Model model)

Записывает предоставленную модель указанному персонажу.

void    write(Writer output, Map<String,Object> options, Model model)

Это легко найти в JavaDoc

Другие вопросы по тегам