1. 引言
在这个教程中,我们将了解如何在Gradle项目中使用多个仓库。当我们需要使用Maven中央仓库之外的JAR文件时,这非常有用。我们还将学习如何使用GitHub发布Java包,并在不同项目之间共享它们。
2. 在Gradle中使用多个仓库
在使用Gradle作为构建工具时,我们经常会在build.gradle
文件的repositories
部分看到mavenCentral()
。如果我们想添加其他仓库,可以在同一部分添加它们,指示我们的库来源:
repositories {
mavenLocal()
mavenCentral()
}
这里,mavenLocal()
用于查找Maven本地缓存中的所有依赖。如果找不到这个缓存中的任何仓库,将从Maven中央仓库下载。
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文档中的说明来创建。然后,我们在build.gradle
文件中添加一个publishing
任务,使用用户名和此令牌:
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包注册表安装库,允许我们在项目中扩展该类:
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包注册表处理受保护的仓库。
如往常一样,示例代码的源代码可在GitHub上查看。