1

这是代码吗

project.getPluginRepositories().add(myCustomRepository); 

afterProjectsRead在Maven 扩展(扩展类)的方法内部执行AbstractMavenLifecycleParticipant应该可以工作吗?它执行得很好(没有错误也没有警告),但是 Maven 似乎没有考虑到 repo,并且构建失败并显示“插件 .... 或其依赖项之一无法解决”!

如果这是不可能的,还有其他方法可以从 Maven 扩展动态添加回购吗?

4

2 回答 2

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>
于 2019-10-17T15:21:31.620 回答
0

如果这是不可能的,还有其他方法可以从 Maven 扩展动态添加回购吗?

它缝合了这段代码

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

作品。这是一个来自而不是的例子,但我想它也应该起作用。 ExecutionListenerMavenLifecycleParticipantafterProjectsRead

警告:这可能不是 Maven 期望你做的,并且可能会破坏一些插件。例如maven-shade-plugin,当以这种方式添加存储库时,尝试生成减少的 POM 时,大部分工作正常,但会中断(并使构建失败)。

于 2017-06-14T09:19:01.773 回答