1
mirror of https://github.com/CarmJos/GithubReleases4J.git synced 2026-06-04 21:18:16 +08:00

57 Commits

Author SHA1 Message Date
renovate[bot] 332d62f62c chore(deps): update dependency org.apache.maven.plugins:maven-surefire-plugin to v3.5.6 2026-05-27 22:42:33 +00:00
renovate[bot] 4c4ef7e821 chore(deps): update dependency org.apache.maven.plugins:maven-surefire-plugin to v3.5.5 2026-03-10 08:05:45 +08:00
renovate[bot] abf50f1dfe chore(deps): update actions/upload-artifact action to v7 2026-03-10 08:05:36 +08:00
renovate[bot] 5121d84302 chore(deps): update dependency org.apache.maven.plugins:maven-shade-plugin to v3.6.2 2026-03-10 08:05:26 +08:00
renovate[bot] d88606462b chore(deps): update actions/upload-artifact action to v6 2026-02-21 00:57:06 +08:00
renovate[bot] 94836b8e89 chore(deps): update dependency org.apache.maven.plugins:maven-compiler-plugin to v3.15.0 2026-02-21 00:56:59 +08:00
renovate[bot] 2cec16a726 fix(deps): update dependency org.jetbrains:annotations to v26.1.0 2026-02-21 00:56:53 +08:00
renovate[bot] ffe1ad97d9 chore(deps): update actions/upload-artifact action to v5 2025-12-01 09:32:06 +08:00
renovate[bot] 9486a602a3 chore(deps): update dependency org.apache.maven.plugins:maven-jar-plugin to v3.5.0 2025-12-01 09:32:00 +08:00
renovate[bot] ac1059c442 chore(deps): update actions/checkout action to v6 2025-12-01 09:31:53 +08:00
renovate[bot] 5ae0ce72fd chore(deps): update dependency org.apache.maven.plugins:maven-source-plugin to v3.4.0 2025-12-01 09:31:47 +08:00
renovate[bot] 2fda505604 chore(deps): update github/codeql-action action to v4 2025-10-23 10:36:58 +08:00
renovate[bot] 7ba85e192c chore(deps): update dependency org.apache.maven.plugins:maven-javadoc-plugin to v3.12.0 2025-09-24 09:19:34 +08:00
renovate[bot] fc3d8300de chore(deps): update dependency org.apache.maven.plugins:maven-compiler-plugin to v3.14.1 2025-09-24 09:19:26 +08:00
renovate[bot] a69e72fea6 chore(deps): update dependency org.apache.maven.plugins:maven-shade-plugin to v3.6.1 2025-09-14 16:56:46 +08:00
renovate[bot] 1cdd74b2f1 chore(deps): update dependency org.apache.maven.plugins:maven-surefire-plugin to v3.5.4 2025-09-14 16:56:40 +08:00
renovate[bot] 019afcadfe fix(deps): update dependency org.jetbrains:annotations to v26.0.2-1 2025-09-06 10:08:51 +08:00
renovate[bot] 057f982c1f chore(deps): update dependency org.apache.maven.plugins:maven-gpg-plugin to v3.2.8 2025-08-21 23:43:25 +08:00
renovate[bot] fc596a6a4a chore(deps): update actions/checkout action to v5 2025-08-21 23:43:17 +08:00
renovate[bot] 0c08de0aec chore(deps): update dependency org.apache.maven.plugins:maven-javadoc-plugin to v3.11.3 2025-08-21 23:43:10 +08:00
renovate[bot] 4ee060f789 chore(deps): update actions/setup-java action to v5 2025-08-21 23:43:04 +08:00
renovate[bot] 6627666e92 fix(deps): update dependency org.json:json to v20250517 2025-06-02 15:05:05 +08:00
renovate[bot] 9291d2747a chore(deps): update dependency org.apache.maven.plugins:maven-surefire-plugin to v3.5.3 2025-04-18 10:55:37 +08:00
renovate[bot] 153a5c8eec chore(deps): update dependency org.apache.maven.plugins:maven-compiler-plugin to v3.14.0 2025-03-12 04:40:28 +08:00
renovate[bot] 2916abf578 fix(deps): update dependency org.jetbrains:annotations to v26.0.2 2025-01-23 03:46:19 +08:00
renovate[bot] ddc2dba6f4 chore(deps): update actions/checkout action to v4 2025-01-20 05:08:23 +08:00
renovate[bot] 491594482b chore(deps): update actions/setup-java action to v4 2025-01-20 05:08:20 +08:00
renovate[bot] 73746bc7f2 chore(deps): update actions/upload-artifact action to v4 2025-01-20 05:08:17 +08:00
renovate[bot] 9bcf525bf4 chore(deps): update dependency org.apache.maven.plugins:maven-gpg-plugin to v3 2025-01-20 05:08:14 +08:00
renovate[bot] 1f090a1a92 chore(deps): update dependency org.apache.maven.plugins:maven-surefire-plugin to v3 2025-01-20 05:08:11 +08:00
renovate[bot] 50d3848da4 chore(deps): update github/codeql-action action to v3 2025-01-20 05:08:08 +08:00
renovate[bot] 35d8369ea0 fix(deps): update dependency org.jetbrains:annotations to v26 2025-01-20 05:08:05 +08:00
renovate[bot] c10a2526d6 fix(deps): update dependency org.json:json to v20250107 2025-01-20 05:08:01 +08:00
renovate[bot] c5de7720bb Update dependency org.apache.maven.plugins:maven-shade-plugin to v3.6.0 2025-01-18 04:13:51 +08:00
renovate[bot] 21865afef0 Update dependency org.apache.maven.plugins:maven-source-plugin to v3.3.1 2025-01-18 04:13:48 +08:00
renovate[bot] 7d0698e75d Update dependency org.apache.maven.plugins:maven-jar-plugin to v3.4.2 2025-01-18 03:54:14 +08:00
renovate[bot] da9aaa6b97 Update dependency org.apache.maven.plugins:maven-javadoc-plugin to v3.11.2 2025-01-18 03:54:11 +08:00
renovate[bot] b24a513af1 Add renovate.json 2025-01-18 03:38:47 +08:00
renovate[bot] ba156d7923 build(deps): org.apache.maven.plugins:maven-compiler-plugin to v3.13.0 (#6)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-17 06:40:19 +08:00
renovate[bot] 3d2d3e0799 build(deps): org.apache.maven.plugins:maven-surefire-plugin to v2.22.2 (#5)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-17 06:39:56 +08:00
dependabot[bot] 162249e095 Bump org.json:json from 20230227 to 20231013 (#4)
Bumps [org.json:json](https://github.com/douglascrockford/JSON-java) from 20230227 to 20231013.
- [Release notes](https://github.com/douglascrockford/JSON-java/releases)
- [Changelog](https://github.com/stleary/JSON-java/blob/master/docs/RELEASES.md)
- [Commits](https://github.com/douglascrockford/JSON-java/commits)

---
updated-dependencies:
- dependency-name: org.json:json
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-16 18:01:25 +08:00
carm e020c07749 Update pom.xml 2023-04-15 12:42:46 +08:00
carm 6d688fb5c4 Merge pull request #3 from CarmJos/dependabot/maven/org.json-json-20230227
Bump json from 20211205 to 20230227
2023-04-15 12:39:22 +08:00
dependabot[bot] 5096003228 Bump json from 20211205 to 20230227
Bumps [json](https://github.com/douglascrockford/JSON-java) from 20211205 to 20230227.
- [Release notes](https://github.com/douglascrockford/JSON-java/releases)
- [Changelog](https://github.com/stleary/JSON-java/blob/master/docs/RELEASES.md)
- [Commits](https://github.com/douglascrockford/JSON-java/commits)

---
updated-dependencies:
- dependency-name: org.json:json
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-14 18:09:07 +00:00
carm b60283a9c2 docs: remove minecraft tag 2022-06-07 06:39:45 +08:00
carm 4cc891edc0 Update README.md 2022-02-07 20:05:42 +08:00
carm 8bf0d98c00 Update README_zh_CN.md 2022-02-07 20:04:46 +08:00
carm df72460044 修改构建名 2022-02-07 03:05:09 +08:00
carm 81f621b0a6 修改构建名 2022-02-07 03:04:40 +08:00
carm 6f8452bed8 部署到Central 2022-02-07 03:00:46 +08:00
carm 3b787b8c0f 修改示例代码 2022-01-24 17:40:31 +08:00
carm a6ab32a762 [v1.3.0] [A] 添加中文Demo示例。 2022-01-23 11:15:10 +08:00
carm 2cad1116b9 [v1.3.0] [A] Add update checker demo. 2022-01-22 15:26:44 +08:00
carm 8445ac812d [v1.3.0] [A] Add the method to fetch how many versions behind 2022-01-22 15:16:34 +08:00
carm c53ca18e96 [v1.2.2] [A] Add GPG Settings. 2022-01-22 14:41:52 +08:00
carm a3cb4bcb1a [v1.2.2] [A] Add GPG Settings. 2022-01-22 14:35:45 +08:00
carm 7eae212bc3 [v1.2.2] [A] Add GPG Settings. 2022-01-22 14:13:41 +08:00
15 changed files with 382 additions and 53 deletions
+41
View File
@@ -0,0 +1,41 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
OK7d0W/LdJ3iFeselROADHgPQn14sg==
=rRA5
-----END PGP PUBLIC KEY BLOCK-----
+4 -4
View File
@@ -38,11 +38,11 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v2 uses: actions/checkout@v6
# Initializes the CodeQL tools for scanning. # Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL - name: Initialize CodeQL
uses: github/codeql-action/init@v1 uses: github/codeql-action/init@v4
with: with:
languages: ${{ matrix.language }} languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file. # If you wish to specify custom queries, you can do so here or in a config file.
@@ -53,7 +53,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below) # If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild - name: Autobuild
uses: github/codeql-action/autobuild@v1 uses: github/codeql-action/autobuild@v4
# ️ Command-line programs to run using the OS shell. # ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl # 📚 https://git.io/JvXDl
@@ -67,4 +67,4 @@ jobs:
# make release # make release
- name: Perform CodeQL Analysis - name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1 uses: github/codeql-action/analyze@v4
+41 -13
View File
@@ -1,7 +1,7 @@
# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time # This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
name: Deploy & Upload name: "Deploy & Upload"
on: on:
# 支持手动触发构建 # 支持手动触发构建
@@ -11,14 +11,14 @@ on:
types: [ published ] types: [ published ]
jobs: jobs:
build: gh-deploy:
name: "Publish Project (GitHub)"
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v6
- name: "Set up JDK" - name: "Set up JDK"
uses: actions/setup-java@v2 uses: actions/setup-java@v5
with: with:
java-version: '11' java-version: '11'
distribution: 'adopt' distribution: 'adopt'
@@ -26,14 +26,17 @@ jobs:
server-id: github server-id: github
server-username: MAVEN_USERNAME server-username: MAVEN_USERNAME
server-password: MAVEN_TOKEN server-password: MAVEN_TOKEN
gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} # Value of the GPG private key to import
gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase
- name: "Maven Deploy" - name: "Maven Deploy With Javadoc"
run: mvn -B deploy --file pom.xml -DskipTests run: mvn -B -Pgithub deploy --file pom.xml -DskipTests
env: env:
MAVEN_USERNAME: ${{ github.repository_owner }} MAVEN_USERNAME: ${{ github.repository_owner }}
MAVEN_TOKEN: ${{secrets.GITHUB_TOKEN}} MAVEN_TOKEN: ${{secrets.GITHUB_TOKEN}}
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}
- name: "Javadoc Deploy Staging" - name: "Copy Javadoc to Location"
run: | run: |
rm -rf docs rm -rf docs
mkdir -vp docs mkdir -vp docs
@@ -44,10 +47,10 @@ jobs:
id: sitemap id: sitemap
uses: cicirello/generate-sitemap@v1 uses: cicirello/generate-sitemap@v1
with: with:
base-url-path: https://${{ github.repository_owner }}.github.io/${{ github.event.repository.name }} base-url-path: https://carmjos.github.io/GithubReleases4J
path-to-root: docs path-to-root: docs
- name: "Output Javadoc stats" - name: "Output stats"
run: | run: |
echo "sitemap-path = ${{ steps.sitemap.outputs.sitemap-path }}" echo "sitemap-path = ${{ steps.sitemap.outputs.sitemap-path }}"
echo "url-count = ${{ steps.sitemap.outputs.url-count }}" echo "url-count = ${{ steps.sitemap.outputs.url-count }}"
@@ -65,11 +68,11 @@ jobs:
git config --global user.name 'CarmJos' git config --global user.name 'CarmJos'
git config --global user.email 'carm@carm.cc' git config --global user.email 'carm@carm.cc'
- name: "Commit Javadocs" - name: "Commit documentations"
run: | run: |
cd docs cd docs
git init git init
git remote add origin git@github.com:${{ github.repository }}.git git remote add origin git@github.com:CarmJos/GithubReleases4J.git
git checkout -b gh-pages git checkout -b gh-pages
git add -A git add -A
git commit -m "API Document generated." git commit -m "API Document generated."
@@ -77,4 +80,29 @@ jobs:
- name: "Push javadocs" - name: "Push javadocs"
run: | run: |
cd docs cd docs
git push origin HEAD:gh-pages --force git push origin HEAD:gh-pages --force
central-deploy:
name: "Deploy Project (Central)"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: "Set up JDK"
uses: actions/setup-java@v5
with:
java-version: '11'
distribution: 'adopt'
cache: maven
server-id: ossrh
server-username: MAVEN_USERNAME
server-password: MAVEN_PASSWORD
gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} # Value of the GPG private key to import
gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase
- name: "Central Deploy"
run: mvn -B -Possrh deploy --file pom.xml -DskipTests
env:
MAVEN_USERNAME: ${{ secrets.OSSRH_USER }}
MAVEN_PASSWORD: ${{ secrets.OSSRH_PASS }}
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}
+5 -5
View File
@@ -1,7 +1,7 @@
# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time # This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
name: Project Build & Tests name: Build & Tests
on: on:
# 支持手动触发构建 # 支持手动触发构建
@@ -14,9 +14,9 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v6
- name: "Set up JDK" - name: "Set up JDK"
uses: actions/setup-java@v2 uses: actions/setup-java@v5
with: with:
java-version: '11' java-version: '11'
distribution: 'adopt' distribution: 'adopt'
@@ -25,14 +25,14 @@ jobs:
server-username: MAVEN_USERNAME server-username: MAVEN_USERNAME
server-password: MAVEN_TOKEN server-password: MAVEN_TOKEN
- name: "Package" - name: "Package"
run: mvn -B package --file pom.xml -Dmaven.javadoc.skip=true run: mvn --no-transfer-progress -B package --file pom.xml -Dmaven.javadoc.skip=true
env: env:
MAVEN_USERNAME: ${{ github.repository_owner }} MAVEN_USERNAME: ${{ github.repository_owner }}
MAVEN_TOKEN: ${{secrets.GITHUB_TOKEN}} MAVEN_TOKEN: ${{secrets.GITHUB_TOKEN}}
- name: "Target Stage" - name: "Target Stage"
run: mkdir staging && cp target/*.jar staging run: mkdir staging && cp target/*.jar staging
- name: "Upload artifact" - name: "Upload artifact"
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v7
with: with:
name: Artifact name: Artifact
path: staging path: staging
+15 -1
View File
@@ -16,7 +16,6 @@ README LANGUAGES [ [**ENGLISH**](README.md) | [中文](README_zh_CN.md) ]
[![License](https://img.shields.io/github/license/CarmJos/GithubReleases4J)](https://opensource.org/licenses/GPL-3.0) [![License](https://img.shields.io/github/license/CarmJos/GithubReleases4J)](https://opensource.org/licenses/GPL-3.0)
[![workflow](https://github.com/CarmJos/GithubReleases4J/actions/workflows/maven.yml/badge.svg?branch=master)](https://github.com/CarmJos/GithubReleases4J/actions/workflows/maven.yml) [![workflow](https://github.com/CarmJos/GithubReleases4J/actions/workflows/maven.yml/badge.svg?branch=master)](https://github.com/CarmJos/GithubReleases4J/actions/workflows/maven.yml)
![CodeSize](https://img.shields.io/github/languages/code-size/CarmJos/GithubReleases4J) ![CodeSize](https://img.shields.io/github/languages/code-size/CarmJos/GithubReleases4J)
![Support](https://img.shields.io/badge/Minecraft-Java%201.16--Latest-green)
![](https://visitor-badge.glitch.me/badge?page_id=GithubReleases4J.readme) ![](https://visitor-badge.glitch.me/badge?page_id=GithubReleases4J.readme)
GitHub Releases for Java , based on [GitHub REST API](https://docs.github.com/cn/rest/reference/releases) . GitHub Releases for Java , based on [GitHub REST API](https://docs.github.com/cn/rest/reference/releases) .
@@ -39,6 +38,7 @@ To provide an easy way to fetch updates and download assets.
- Size - Size
- ... - ...
- Release's Assets Download - Release's Assets Download
- Update check methods. (See demo)
## Dependency Usage ## Dependency Usage
@@ -49,21 +49,32 @@ To provide an easy way to fetch updates and download assets.
<project> <project>
<repositories> <repositories>
<repository>
<!--Using central repository-->
<id>maven</id>
<name>Maven Central</name>
<url>https://repo1.maven.org/maven2</url>
</repository>
<repository> <repository>
<!--Using github packages--> <!--Using github packages-->
<id>GithubReleases4J</id> <id>GithubReleases4J</id>
<name>GitHub Packages</name> <name>GitHub Packages</name>
<url>https://maven.pkg.github.com/CarmJos/GithubReleases4J</url> <url>https://maven.pkg.github.com/CarmJos/GithubReleases4J</url>
</repository> </repository>
</repositories> </repositories>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>cc.carm.lib</groupId> <groupId>cc.carm.lib</groupId>
<artifactId>githubreleases4j</artifactId> <artifactId>githubreleases4j</artifactId>
<version>[LATEST RELEASE]</version> <version>[LATEST RELEASE]</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
</dependencies> </dependencies>
</project> </project>
@@ -76,6 +87,9 @@ To provide an easy way to fetch updates and download assets.
```groovy ```groovy
repositories { repositories {
mavenCentral() // Using central repository.
// Using github packages. // Using github packages.
maven { url 'https://maven.pkg.github.com/CarmJos/GithubReleases4J' } maven { url 'https://maven.pkg.github.com/CarmJos/GithubReleases4J' }
} }
+18 -2
View File
@@ -41,27 +41,39 @@ GitHub Releases for Java , 基于 [GitHub REST API](https://docs.github.com/cn/r
<project> <project>
<repositories> <repositories>
<repository>
<!--采用Maven中心库,安全稳定,但版本更新需要等待同步-->
<id>maven</id>
<name>Maven Central</name>
<url>https://repo1.maven.org/maven2</url>
</repository>
<repository> <repository>
<!--采用github依赖库,安全稳定,但需要配置 (推荐)--> <!--采用github依赖库,安全稳定,但需要配置 (推荐)-->
<id>GithubReleases4J</id> <id>GithubReleases4J</id>
<name>GitHub Packages</name> <name>GitHub Packages</name>
<url>https://maven.pkg.github.com/CarmJos/GithubReleases4J</url> <url>https://maven.pkg.github.com/CarmJos/GithubReleases4J</url>
</repository> </repository>
<repository> <repository>
<!--采用我的私人依赖库,简单方便,但可能因为变故而无法使用--> <!--采用我的私人依赖库,简单方便,但可能因为变故而无法使用-->
<id>carm-repo</id> <id>carm-repo</id>
<name>Carm's Repo</name> <name>Carm's Repo</name>
<url>https://repo.carm.cc/repository/maven-public/</url> <url>https://repo.carm.cc/repository/maven-public/</url>
</repository> </repository>
</repositories> </repositories>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>cc.carm.lib</groupId> <groupId>cc.carm.lib</groupId>
<artifactId>githubreleases4j</artifactId> <artifactId>githubreleases4j</artifactId>
<version>[LATEST RELEASE]</version> <version>[LATEST RELEASE]</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
</dependencies> </dependencies>
</project> </project>
@@ -74,6 +86,10 @@ GitHub Releases for Java , 基于 [GitHub REST API](https://docs.github.com/cn/r
```groovy ```groovy
repositories { repositories {
// 采用Maven中心库,安全稳定,但版本更新需要等待同步
mavenCentral()
// 采用github依赖库,安全稳定,但需要配置 (推荐) // 采用github依赖库,安全稳定,但需要配置 (推荐)
maven { url 'https://maven.pkg.github.com/CarmJos/GithubReleases4J' } maven { url 'https://maven.pkg.github.com/CarmJos/GithubReleases4J' }
@@ -90,7 +106,7 @@ dependencies {
## 开发示例 ## 开发示例
请 [**点击这里**](src/test/java/GithubDemo.java) 查看示例代码。 请 [**点击这里**](src/test/java/GithubDemoChinese.java) 查看示例代码,也可以 [点击这里](https://github.com/CarmJos/UltraDepository/blob/master/src/main/java/cc/carm/plugin/ultradepository/hooker/UpdateChecker.java) 查看实例项目
## 支持与捐赠 ## 支持与捐赠
@@ -115,4 +131,4 @@ dependencies {
> MIT 协议是所有开源许可中最宽松的一个,除了必须包含许可声明外,再无任何限制。 > MIT 协议是所有开源许可中最宽松的一个,除了必须包含许可声明外,再无任何限制。
> >
> *以上文字来自 [五种开源协议GPL,LGPL,BSD,MIT,Apache](https://www.oschina.net/question/54100_9455) 。* > *以上文字来自 [五种开源协议GPL,LGPL,BSD,MIT,Apache](https://www.oschina.net/question/54100_9455) 。*
</details> </details>
+60 -15
View File
@@ -14,7 +14,7 @@
<groupId>cc.carm.lib</groupId> <groupId>cc.carm.lib</groupId>
<artifactId>githubreleases4j</artifactId> <artifactId>githubreleases4j</artifactId>
<version>1.2.1</version> <version>1.3.2</version>
<name>GithubReleases4J</name> <name>GithubReleases4J</name>
<description>Github Releases for Java</description> <description>Github Releases for Java</description>
@@ -53,11 +53,6 @@
<name>Github Pages</name> <name>Github Pages</name>
<url>https://CarmJos.github.io/GithubReleases4J</url> <url>https://CarmJos.github.io/GithubReleases4J</url>
</site> </site>
<repository>
<id>github</id>
<name>GitHub Packages</name>
<url>https://maven.pkg.github.com/CarmJos/GithubReleases4J</url>
</repository>
</distributionManagement> </distributionManagement>
<scm> <scm>
@@ -101,13 +96,13 @@
<dependency> <dependency>
<groupId>org.json</groupId> <groupId>org.json</groupId>
<artifactId>json</artifactId> <artifactId>json</artifactId>
<version>20211205</version> <version>20250517</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.jetbrains</groupId> <groupId>org.jetbrains</groupId>
<artifactId>annotations</artifactId> <artifactId>annotations</artifactId>
<version>22.0.0</version> <version>26.1.0</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
@@ -125,15 +120,35 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId> <artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version> <version>3.5.6</version>
<configuration> <configuration>
<useSystemClassLoader>false</useSystemClassLoader> <useSystemClassLoader>false</useSystemClassLoader>
</configuration> </configuration>
</plugin> </plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>3.2.8</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
<configuration>
<gpgArguments>
<arg>--pinentry-mode</arg>
<arg>loopback</arg>
</gpgArguments>
</configuration>
</plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId> <artifactId>maven-javadoc-plugin</artifactId>
<version>3.2.0</version> <version>3.12.0</version>
<configuration> <configuration>
<classifier>javadoc</classifier> <classifier>javadoc</classifier>
<links> <links>
@@ -157,7 +172,7 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version> <version>3.15.0</version>
<configuration> <configuration>
<source>${java.version}</source> <source>${java.version}</source>
<target>${java.version}</target> <target>${java.version}</target>
@@ -168,12 +183,12 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId> <artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version> <version>3.5.0</version>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId> <artifactId>maven-source-plugin</artifactId>
<version>3.2.0</version> <version>3.4.0</version>
<executions> <executions>
<execution> <execution>
<phase>package</phase> <phase>package</phase>
@@ -186,7 +201,7 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId> <artifactId>maven-shade-plugin</artifactId>
<version>3.2.3</version> <version>3.6.2</version>
<executions> <executions>
<execution> <execution>
<phase>package</phase> <phase>package</phase>
@@ -219,5 +234,35 @@
</resources> </resources>
</build> </build>
<profiles>
</project> <profile>
<id>ossrh</id>
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>ossrh</id>
<url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
</profile>
<profile>
<id>github</id>
<distributionManagement>
<repository>
<id>github</id>
<name>GitHub Packages</name>
<url>https://maven.pkg.github.com/CarmJos/GithubReleases4J</url>
</repository>
</distributionManagement>
</profile>
</profiles>
</project>
+6
View File
@@ -0,0 +1,6 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:recommended"
]
}
@@ -8,7 +8,6 @@ import org.json.JSONObject;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.IntStream; import java.util.stream.IntStream;
@@ -135,10 +134,8 @@ public class GithubRelease {
* *
* @return The author user {@link GithubUser} * @return The author user {@link GithubUser}
*/ */
public @Nullable GithubUser getAuthor() { public @NotNull GithubUser getAuthor() {
return Optional.ofNullable(getContents().getJSONObject("author")) return GithubUser.of(getContents().getJSONObject("author"));
.map(GithubUser::of)
.orElse(null);
} }
/** /**
@@ -27,6 +27,7 @@ public class GithubReleases4J {
// Should not be the instance. // Should not be the instance.
} }
public static String GITHUB_URL = "https://github.com";
public static String GITHUB_API_URL = "https://api.github.com"; public static String GITHUB_API_URL = "https://api.github.com";
public static SimpleDateFormat GH_TIME_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); public static SimpleDateFormat GH_TIME_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
@@ -160,6 +161,62 @@ public class GithubReleases4J {
return getLatestRelease(owner, repository, null); return getLatestRelease(owner, repository, null);
} }
/**
* Get how many versions behind the current version's tag name.
*
* @param owner Repository's Owner
* @param repository Repository's Name
* @param token OAuth Access Token
* <br> Necessary when this repository is private.
* @param currentTagName Current Version's tag name.
* @return NULL if not fetch releases, -1 if no match tag name.
* @since 1.3.0
*/
public static @Nullable Integer getVersionBehind(@NotNull String owner, @NotNull String repository,
@Nullable String token, @NotNull String currentTagName) {
List<GithubRelease> releases = GithubReleases4J.listReleases(owner, repository, token);
if (releases.isEmpty()) return null; // Could not fetch releases.
int i = 0;
for (GithubRelease release : releases) {
if (release.getTagName().equalsIgnoreCase(currentTagName)) {
break;
}
i++;
}
if (i == releases.size()) return -1; // No match tag name;
return i;
}
/**
* Get how many versions behind the current version's tag name.
*
* @param owner Repository's Owner
* @param repository Repository's Name
* @param currentTagName Current Version's tag name.
* @return NULL if not fetch releases, -1 if no match tag name.
* @since 1.3.0
*/
public static @Nullable Integer getVersionBehind(@NotNull String owner, @NotNull String repository,
@NotNull String currentTagName) {
return getVersionBehind(owner, repository, null, currentTagName);
}
public static @NotNull String getReleasesURL(@NotNull String owner, @NotNull String repository) {
return buildURL("%s/%s/%s/releases", GITHUB_URL, owner, repository);
}
public static @NotNull String getLatestReleaseURL(@NotNull String owner, @NotNull String repository) {
return getReleasesURL(owner, repository) + "/latest";
}
public static @NotNull String getReleaseURLByTag(@NotNull String owner, @NotNull String repository,
@NotNull String releaseTagName) {
return getReleasesURL(owner, repository) + "/tag/" + releaseTagName;
}
private static String buildURL(@NotNull String url, Object... params) { private static String buildURL(@NotNull String url, Object... params) {
return String.format(url, params); return String.format(url, params);
} }
+27
View File
@@ -39,4 +39,31 @@ public class GithubDemo {
} }
} }
public void checkUpdate() {
String owner = "Owner";
String repository = "RepoName";
Integer behindVersions = GithubReleases4J.getVersionBehind(
owner, repository,
"Token",// OAuth token if it is a private repository.
"Current Version Tag"
);
if (behindVersions == null) {
System.out.println("Check failed! Please check updates manually.");
System.out.println("Download at " + GithubReleases4J.getReleasesURL(owner, repository));
} else if (behindVersions == 0) {
System.out.println("Check successfully, Now is up-to-date.");
} else if (behindVersions > 0) {
System.out.println("Outdated! Now behind " + behindVersions + " versions.");
System.out.println("Download latest version at " + GithubReleases4J.getLatestReleaseURL(owner, repository));
} else {
System.out.println("Check failed! Current version doesn't exists.");
System.out.println("Please use original version to avoid security issues.");
System.out.println("Download latest version at " + GithubReleases4J.getLatestReleaseURL(owner, repository));
}
}
} }
+70
View File
@@ -0,0 +1,70 @@
import cc.carm.lib.githubreleases4j.GithubAsset;
import cc.carm.lib.githubreleases4j.GithubRelease;
import cc.carm.lib.githubreleases4j.GithubReleases4J;
import cc.carm.lib.githubreleases4j.GithubUser;
import java.io.IOException;
import java.util.List;
public class GithubDemoChinese {
public void demo() {
String owner = "库主(用户名或组织名)";
String repository = "库名";
List<GithubRelease> releases = GithubReleases4J.listReleases("Owner", "RepoName");
// 列出项目中所有发行版
GithubRelease latestRelease = GithubReleases4J.getLatestRelease(
owner, repository, "Token" // 如果是私有项目 则需要输入OAuth token
); // 得到该库的最新发行
if (latestRelease != null) {
List<GithubAsset> assets = latestRelease.getAssets();
// 得到该发行下的所有附件
for (GithubAsset asset : assets) {
try {
asset.download(); // 使用原附件名直接下载
} catch (IOException exception) {
exception.printStackTrace();
}
GithubUser uploader = asset.getUploader(); // 得到附件的上传者
}
GithubUser author = latestRelease.getAuthor(); // 得到该发行的发布者
}
}
public void checkUpdate() {
String owner = "库主(用户名或组织名)";
String repository = "库名";
String version = "当前版本的 TagName";
Integer behindVersions = GithubReleases4J.getVersionBehind(
owner, repository, "Token",// 如果是私有项目 则需要输入OAuth token
version
);
if (behindVersions == null) {
System.out.println("检查更新失败! 请您手动检查版本更新。");
System.out.println("下载地址 " + GithubReleases4J.getReleasesURL(owner, repository));
} else if (behindVersions == 0) {
System.out.println("检查完成,当前已是最新版本。");
} else if (behindVersions > 0) {
System.out.println("发现新版本! 目前已落后 " + behindVersions + " 个版本。");
System.out.println("最新版下载地址 " + GithubReleases4J.getLatestReleaseURL(owner, repository));
} else {
System.out.println("检查更新失败! 当前版本未知,请您使用原生版本以避免安全问题。");
System.out.println("最新版下载地址 " + GithubReleases4J.getLatestReleaseURL(owner, repository));
}
}
}
+13 -7
View File
@@ -18,7 +18,7 @@ public class GithubReleasesTest {
@Test @Test
public void onTest() { public void onTest() {
GithubReleases4J.listReleases("CarmJos", "EasyPlugin") GithubReleases4J.listReleases("CarmJos", "GithubReleases4J")
.stream().limit(2).forEach(GithubReleasesTest::printInfo); .stream().limit(2).forEach(GithubReleasesTest::printInfo);
GithubRelease release = GithubReleases4J.getLatestRelease("CarmJos", "UltraDepository"); GithubRelease release = GithubReleases4J.getLatestRelease("CarmJos", "UltraDepository");
@@ -32,16 +32,18 @@ public class GithubReleasesTest {
private static void printInfo(@Nullable GithubRelease release) { private static void printInfo(@Nullable GithubRelease release) {
if (release == null) System.out.println("# NULL"); if (release == null) System.out.println("# NULL");
else { else {
System.out.println("# " + release.getName() + " [" + FORMAT.format(release.getCreateTime()) + "]"); print("# %s %s [%s] ",
release.getRepository(), release.getName(),
FORMAT.format(release.getCreateTime())
);
List<GithubAsset> assets = release.getAssets(); List<GithubAsset> assets = release.getAssets();
assets.forEach(GithubReleasesTest::printAssets); assets.forEach(GithubReleasesTest::printAssets);
} }
} }
private static void printAssets(@Nullable GithubAsset assets) { private static void printAssets(@Nullable GithubAsset assets) {
if (assets == null) System.out.println("- NULL"); if (assets != null) {
else { print("- %s (%s B)", assets.getName(), assets.getSize());
System.out.println("- " + assets.getName() + " [" + assets.getSize() + "]");
} }
} }
@@ -49,12 +51,16 @@ public class GithubReleasesTest {
if (!DOWNLOAD) return; if (!DOWNLOAD) return;
if (assets == null) return; if (assets == null) return;
try { try {
File file = assets.download(); File file = assets.download(StandardCopyOption.REPLACE_EXISTING);
System.out.println("- at " + file.getAbsolutePath()); System.out.println("| -> " + file.getAbsolutePath());
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
private static void print(String format, Object... params) {
System.out.printf((format) + "%n", params);
}
} }
@@ -5,7 +5,7 @@ import org.junit.Test;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
public class GithubUserTestTest { public class GithubUserInfoTest {
public static final SimpleDateFormat FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public static final SimpleDateFormat FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -0,0 +1,22 @@
import cc.carm.lib.githubreleases4j.GithubReleases4J;
import org.junit.Test;
public class GithubVersionCheckerTest {
@Test
public void test() {
System.out.println(GithubReleases4J.getVersionBehind("CarmJos", "UltraDepository", "1.3.4"));
System.out.println(GithubReleases4J.getVersionBehind("CarmJos", "UltraDepository", "v1.2.0"));
System.out.println(GithubReleases4J.getVersionBehind("CarmJos", "UltraDepository", "TEST"));
System.out.println(GithubReleases4J.getVersionBehind("CarmJos", "NULL", "TEST"));
System.out.println("Download at " + GithubReleases4J.getReleaseURLByTag("CarmJos", "UltraDepository", "1.3.4"));
System.out.println("Download at " + GithubReleases4J.getLatestReleaseURL("CarmJos", "UltraDepository"));
}
}