【Gradle】maven-publish插件的使用

59 篇文章 0 订阅

一、maven-publish介绍

  在 Gradle 1.3 中,引入了一种新的发布机制。这种新机制引入了一些新概念和功能,这些功能使 Gradle 发布变得更加强大,现在已成为发布工件的首选选项。

二、maven-publish使用

1、在 build.gradle 声明插件

plugins {
    id 'maven-publish'
}

2、使用publishing{}块进行配置

group = 'org.example'
version = '1.0'

publishing {
    publications {
        myLibrary(MavenPublication) {
            from components.java
        }
    }

    repositories {
        mavenLocal()
    }
}

上面我们定义了一个名为myLibrary的publication,from components.java这句表明是一个java库,也就是最终会以jar包的形式发布。还定义了一个本地maven仓库,表明myLibrary的jar包最终会被发布到本地maven仓库。components定义了发布的组件,支持三个值:components.java(由JavaPlugin添加)、components.web(由WarPlugin添加)、components.javaPlatform(由JavaPlatformPlugin添加)。如果我们需要将一个web项目打包成war包发布,则使用components.web。我们当前的例子为jar,则使用components.java。

  Gradle使用与Maven相同的逻辑来标识本地Maven缓存的位置。如果在settings.xml中定义了本地Maven仓库位置,那么Gradle将使用这个位置。USER_HOME/.m2下的settings.xml将会覆盖M2_HOME/conf中的settings.xml。如果没有可获取的settings.xml,Gradle将默认使用USER_HOME/.m2/repository作为本地Maven仓库位置。

3、maven-publish提供的tasks

  maven-publish提供了如下tasks:

任务描述
generatePomFileForPubNamePublication创建需要发布的名为PubName的POM文件,填充已知的元数据,如项目名称、项目版本和依赖项。POM文件的默认位置是build/publications/$pubName/pom-default.xml.
publishPubNamePublicationToRepoNameRepository将PubName发布到名为RepoName的存储库。如果你有一个没有显式名称的存储库定义,RepoName将是“Maven”。
publishPubNamePublicationToMavenLocal将PubName发布复制到本地Maven缓存-通常是$USER_HOME/.m2/repository-以及发布的POM文件和其他元数据。
publish将所有定义的publication发布到所有定义的存储库的聚合任务。它不包括将publication复制到本地Maven库。
publishToMavenLocal将所有定义的publication复制到本地 Maven 库中,包括它们的元数据 (POM 文件等)

4、执行任务

  • 命令:gradle tasks

  可以查看所有任务

  • 命令:gradle publishToMavenLocal

  执行publishToMavenLocal任务,或者在idea的gradle窗口点击任务名也可以

  查看本地maven仓库,即可发找到发布的jar包

三、发布class.jar和sources.jar及javadoc.jar 三种jar包

  新建打包sourcesJar任务 和 打包javadocJar任务,然后进行发布,

  新增的 sourcesJar任务 和 javadocJar任务 可以在idea的gradle窗口中other任务列表中看到

  完整代码如下:

 

 

// 声明插件
plugins {
    id 'maven-publish'
}


// 项目group/artifact/version信息
group 'com.test.gradle'
// name 默认项目名
version '1.0-SNAPSHOT'


// 打包sourcesJar任务
task sourcesJar(type: Jar, dependsOn: classes) {
    classifier = 'sources'
    from sourceSets.main.allSource
}

// 打包javadocJar任务
task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}

// 解决javadoc打包乱码
javadoc {
    options {
        encoding "UTF-8"
        charSet 'UTF-8'
        author true
        version true
        title "文档大标题"
    }
}


publishing {
    // 发布
    publications {
        mavenJava(MavenPublication) {
            //指定group/artifact/version信息
            groupId project.group
            artifactId project.name
            version project.version
            // components.java jar包
            // components.web war包
            from components.java

            // 增加 sourcesJar、javadocJar 任务
            artifact sourcesJar
            artifact javadocJar
        }
    }
    // 发布仓库
    repositories {

           // 本地仓库位于USER_HOME/.m2/repository
           //
        mavenLocal()
        // 其他maven仓库
        maven { url uri('/Users/h__d/Desktop/1') }
        // aliyun镜像仓库
//         maven {
//             // 凭证
//             credentials {
//                 username 'username' // 仓库发布用户名
//                 password 'password' // 仓库发布用户密码
//             }
//             // 地址
//             url 'https://maven.aliyun.com/nexus/content/groups/public/'
//         }
    }
}

发布到配置仓库命令:gradle publish

  发布到本地仓库命令:gradle publishToMavenLocal

  进行发布

 

参考:

  1、https://blog.csdn.net/u013632755/article/details/100111453

  2、https://blog.csdn.net/dnc8371/article/details/106812825

  3、https://blog.csdn.net/u011578734/article/details/114104495

转自:【Gradle】maven-publish插件的使用 - H__D - 博客园

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
m-publish是一个Gradle插件,用于将本地library发布到Apache Maven仓库。通过使用插件,我们可以将*.aar、*.jar等library发布到仓库中,并通过gradle或者maven进行远程依赖使用。 要使用maven-publish插件,需要在build.gradle中声明插件,并在publishing{}块中进行配置。首先,通过在plugins{}块中添加id 'maven-publish'来声明插件。然后,在publishing{}块中,可以配置group和version属性,以及定义要发布的publication和repository。 例如,通过components.java来指定要发布的library,使用mavenLocal()来指定要发布到的仓库。可以根据需要添加更多的publication和repository配置。 maven-publish插件提供了一些任务,如generatePomFileForPubNamePublication用于创建需要发布的POM文件,并填充一些已知的元数据,例如项目名称、项目版本和依赖项。publishPubNamePublicationToRepoNameRepository用于将指定publication发布到指定repository。publishPubNamePublicationToMavenLocal用于将指定publication发布复制到本地Maven缓存,包括POM文件和其他元数据。 此外,还有一些其他任务,如publish将所有定义的publication发布到所有定义的存储库的聚合任务,而publishToMavenLocal将所有定义的publication复制到本地Maven库中,包括它们的元数据。 例如,如果我们有一个名为myLibrary的publication,并将其发布到mavenLocal()仓库,我们可以运行命令publishPubNamePublicationToMavenLocal来实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值