如何从 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
我已成功将 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
.
<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