在 Gradle 中使用多個存儲庫
一、簡介
在本教程中,我們將了解如何在 Gradle 項目中使用多個存儲庫。當我們需要使用 Maven Central 上不可用的 JAR 文件時,這很有用。我們還將了解如何使用 GitHub 發布 Java 包並在不同項目之間共享它們。
2. 在 Gradle 中使用多個存儲庫
在使用 Gradle 作為構建工具時,我們經常在 build.gradle 的repositories
部分遇到mavenCentral()
build.gradle.
如果我們想添加其他存儲庫,我們可以將它們添加到同一部分以指示我們的庫的來源:
repositories {
mavenLocal()
mavenCentral()
}
在這裡, mavenLocal()
用於查找 Maven 本地緩存中的所有依賴項。任何未在此緩存中找到的存儲庫將從 Maven Central 下載。
3.使用經過身份驗證的存儲庫
我們還可以通過提供有效的身份驗證來使用不公開可用的存儲庫。例如, GitHub 和其他一些平台提供了一種功能,可以將我們的包發佈到它的註冊中心,然後在其他項目中使用它。
3.1.將包發佈到 GitHub 包註冊表
我們會將以下類發佈到 GitHub 註冊表,稍後在另一個項目中使用它:
public class User {
private Integer id;
private String name;
private Date dob;
// standard constructors, getters and setters
}
要發布我們的代碼,我們需要來自 GitHub 的個人訪問令牌。我們可以按照GitHub 文檔中提供的說明創建一個。然後,我們使用我們的用戶名和此令牌將publishing
任務添加到我們的build.gradle
文件中:
publishing {
publications {
register("jar", MavenPublication) {
from(components["java"])
pom {
url.set("https://github.com/eugenp/tutorials.git")
}
}
}
repositories {
maven {
name = "GitHubPackages"
url = "https://maven.pkg.github.com/eugenp/tutorials"
credentials {
username = project.USERNAME
password = project.GITHUB_TOKEN
}
}
}
}
在上面的代碼片段中, username
和password
是在執行 Gradle 的publishing
任務時提供的項目級變量。
3.2.使用已發布的包作為庫
成功發布我們的包後,我們可以將它安裝為來自經過身份驗證的存儲庫的庫。讓我們在build.gradle
中添加以下代碼以在新項目中使用已發布的包:
repositories {
// other repositories
maven {
name = "GitHubPackages"
url = "https://maven.pkg.github.com/eugenp/tutorials"
credentials {
username = project.USERNAME
password = project.GITHUB_TOKEN
}
}
}
dependencies {
implementation('com.baeldung.gradle:publish-package:1.0.0-SNAPSHOT')
testImplementation("org.junit.jupiter:junit-jupiter-engine:5.9.0")
// other dependencies
}
這將從 GitHub Package Registry 安裝庫,並允許我們在我們的項目中擴展類:
public class Student extends User {
private String studentCode;
private String lastInstitution;
// standard constructors, getters and setters
}
讓我們使用一個簡單的測試方法來測試我們的代碼:
@Test
public void testPublishedPackage(){
Student student = new Student();
student.setId(1);
student.setStudentCode("CD-875");
student.setName("John Doe");
student.setLastInstitution("Institute of Technology");
assertEquals("John Doe", student.getName());
}
4。結論
在本文中,我們了解了在處理 Gradle 項目時如何使用來自多個存儲庫的庫。我們還學習瞭如何將 GitHub Package Registry 用於經過身份驗證的存儲庫。
與往常一樣,示例的源代碼可以在 GitHub 上找到。