Можно ли добавить репозиторий maven из расширения maven в Maven 3.5

Это код

project.getPluginRepositories().add(myCustomRepository); 

выполнено внутри afterProjectsRead метод расширения maven (расширение класса AbstractMavenLifecycleParticipant) должен работать? Он работает нормально (без ошибок и предупреждений), но Maven, похоже, не учитывает хранилище, и сборка завершается неудачно с помощью "Plugin .... или не удалось разрешить одну из его зависимостей"!

Если это невозможно, есть ли другие способы динамически добавить репо из расширения maven?

1 ответ

Другой способ - слушать как EventSpyзатем введите настройки уровня проекта, в которых мы можем определить пользовательские репозитории.

Например,

в ${basedir}/.mvn/extensions.xml

    <extensions xmlns="http://maven.apache.org/EXTENSIONS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/EXTENSIONS/1.0.0 http://maven.apache.org/xsd/core-extensions-1.0.0.xsd">
      <extension>
        <groupId>com.github.gzm55.maven</groupId>
        <artifactId>project-settings-extension</artifactId>
        <version>0.1.1</version>
      </extension>
    </extensions>

в ${basedir}/.mvn/settings.xml

  <settings>

    <mirrors>...</mirrors>

    <profiles>
      <profile>
        <repositories/>
      </profile>
    </profiles>

  </settings>

Если это невозможно, есть ли другие способы динамически добавить репо из расширения maven?

Это швы этот код

List<ArtifactRepository> pluginRepos = new LinkedList<>();
pluginRepos.addAll(project.getPluginArtifactRepositories());
pluginRepos.add(myCustomRepository);
project.setPluginArtifactRepositories(pluginRepos);

работает. Вот пример из ExecutionListener скорее, чем MavenLifecycleParticipant но я думаю, это должно работать в afterProjectsRead тоже.

ВНИМАНИЕ: Это, вероятно, не то, что Maven ожидает от вас, и может сломать некоторые плагины. Например maven-shade-plugin работает в основном нормально, но ломается (и не в состоянии сборки) при попытке создать уменьшенное POM, когда репозитории добавляются таким образом.

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