将 Java 库发布到 Maven 存储库
最后修改时间:2023 年 9 月 7 日本教程的目的是演示如何将 Gradle 项目中创建的 Java 库发布到本地 Maven 存储库,然后使用 IntelliJ IDEA 发布到远程存储库。
让我们从创建一个 Gradle 项目开始。
创建一个新的 Gradle 项目
在欢迎屏幕上,选择新建项目。
如果您的起点是已在 IntelliJ IDEA 中打开的项目,则转到文件 | 新 | 项目。
在打开的页面上,选择Gradle,保留默认选项,然后单击Next。
在打开的页面上,让我们输入项目的名称。在我们的例子中,它是gradle-publish,将其余选项保留为默认值,然后单击Finish。
IntelliJ IDEA 创建一个 Gradle 项目并启用Gradle工具窗口。
现在让我们稍微调整一下build.gradle文件,因为我们需要添加对 Java 库的支持并构建我们的项目。
编辑build.gradle
在“项目”工具窗口中,双击build.gradle文件以在编辑器中将其打开。
此时build.gradle包含以下代码:
plugins { id 'java' } group 'org.example' version '1.0-SNAPSHOT' repositories { mavenCentral() } dependencies { testCompile group: 'junit', name: 'junit', version: '4.12' }
在
plugins
部分中,更改'java'
为'java-library'
。plugins { id 'java-library' } group 'org.example' version '1.0-SNAPSHOT' repositories { mavenCentral() } dependencies { testCompile group: 'junit', name: 'junit', version: '4.12' }
单击编辑器将更改加载到您的项目中。
使用src
/main 目录为您的库添加代码。/java 现在,在Gradle工具窗口中,单击项目节点,单击任务,然后单击build。
在打开的列表中,双击build来执行将生成.jar文件的构建任务。
结果,我们在项目工具窗口的build/libs目录中生成了一个生成的.jar文件。
现在让我们遵循 Maven 约定并为我们的库指定 Maven 坐标。由于 IntelliJ IDEA 已经添加GroupId
,并且Version
当我们创建项目时,我们唯一需要更改的是ArtifactId
.
更改ArtifactId并生成JAR文件
在“项目”工具窗口中,双击“settings.gradle”文件以在编辑器中将其打开。更改
rootProject.name
从gradle-publish
到my-artifact-id
。rootProject.name = 'my-artifact-id'
单击以将更改加载到您的项目中。
在Gradle工具窗口中,单击任务。
在build目录中先双击clean任务执行,然后再执行build任务。
IntelliJ IDEA 将生成一个.jar文件,其中包含与 Maven 命名约定和更新的工件名称一致的信息。
现在让我们进一步使用构建脚本并将库发布到本地 Maven 存储库中。
将库发布到本地 Maven 存储库
打开build.gradle文件并添加
id 'maven-publish'
到该plugins
部分。单击以将更改加载到您的项目中。
在Gradle工具窗口的发布部分中,双击publishToMavenLocal来运行任务。
我们可以进一步编辑build.gradle文件,将我们的库发布到远程存储库。
发布到远程仓库
在build.gradle文件中添加以下部分:
publishing { publications { myLib(MavenPublication) { from components.java } } repositories { maven { name = "MyRepo" // optional target repository name url = "http://my.org.server/repo/url" credentials { username = 'alice' password = 'my-password' } } } }
单击以将更改加载到您的项目中。
在Gradle工具窗口中,打开发布部分,然后双击publishAllPublicationsToMyRepository运行任务。
有关自定义 POM 文件、使用不同快照或发布存储库的更多信息,请参阅Gradle 文档。
感谢您的反馈意见!