如何从 Github 包中获取 Maven 插件?

How to fetch maven plugin from Github packages?

我已成功将 java 包部署到 Github 个包,我尝试将其作为依赖项成功使用:

<dependency>
      <groupId>com.example</groupId>
      <artifactId>demo</artifactId>
      <version>1.0.0-SNAPSHOT</version>
</dependency>

但我无法像这样将其解析(获取)为 Maven 插件:

<build>
    <plugins>
      <plugin>
        <groupId>com.example</groupId>
        <artifactId>demo</artifactId>
        <version>1.0.0-SNAPSHOT</version>
      </plugin>
...

我收到这个错误:

Plugin com.example:demo:1.0.0-SNAPSHOT or one of its dependencies could not be resolved:
Could not find artifact com.example:demo:1.0.0-SNAPSHOT -> [Help 1]

.m2/settings.xlm 也已准备就绪并且工作正常,因为我通过将包作为依赖项而不是插件获取来测试它,它包含:

<server>
      <id>github</id>
      <username>USER</username>
      <password>PERSONAL_TOKEN_SCOPE_REPO_W_R_PACKAGES</password>
</server>
<profile>
      <id>github</id>
      <repositories>
        <repository>
          <id>github</id>
          <name>GitHub OWNER Apache Maven Packages</name>
          <url>https://maven.pkg.github.com/OWNER/REPO-NAME</url>
          <releases>
              <enabled>true</enabled>
          </releases>
          <snapshots>
            <updatePolicy>always</updatePolicy>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
</profile>
<activeProfiles>
    <activeProfile>github</activeProfile>
</activeProfiles>

有什么想法吗?提前致谢

我找到了如何正确配置它的方法。

您可以看到一个示例项目,其中包含正在运行的 GitHub 操作 CI 和 GitHub 包注册表 here:

要查看如何包含依赖项,请检查: GitHub-plugin-registry-example Template

诀窍是在全局 Maven settings.xml.

中向 GitHub API 添加身份验证
<servers>
    <server>
        <id>github</id>
        <username>YOUR_USERNAME</username>
        <password>YOUR_AUTH_TOKEN</password>
    </server>
</servers>

YOUR_USERNAME 替换为您的 GitHub 登录名。 将 YOUR_AUTH_TOKEN 替换为生成的 GitHub 个人访问令牌: GitHub > 设置 > 开发者设置 > 个人访问令牌 > 生成新令牌: 令牌至少需要 read:packages 范围。否则你会得到一个 Not authorized 异常。

不清楚读取包是否也需要此身份验证。特别是因为在包页面上无需任何登录即可使用 jar:https://github.com/TobseF/HelloMaven/packages

所以有点麻烦,因为我们必须添加 github... 并希望其他人也能提供带有 github id 的存储库。否则我们必须为每个 github 依赖项添加一个服务器配置。

请记住,每个 GitHub 存储库都是它自己的 Maven 存储库。所以没有像maven central这样的全局注册表。每个依赖项都必须提供自己的存储库 link 声明。

但结合 GitHub 操作 CI,这是一个非常好的替代方案,无需任何第三方插件。

尤里卡!为了获取插件,我们应该使用 <pluginRepositories> 而不是用于获取依赖项的 <repositories>

Remember: pluginRepositories contains the information needed for establishing connections with remote repository.

我的设置是正确的,我只需要在 <profile>:

中添加此部分
<pluginRepositories>
     <pluginRepository>
          <id>github</id>
          <name>GitHub OWNER Apache Maven Packages</name>
          <url>https://maven.pkg.github.com/OWNER/REPO-NAME</url>

          <!-- next elements are up to you -->
          <releases>
              <enabled>true</enabled>
          </releases>
          <snapshots>
            <updatePolicy>always</updatePolicy>
            <enabled>true</enabled>
          </snapshots>
     </pluginRepository>
</pluginRepositories>

查看示例 ~/.m2/settings.xml here