• 【Gradle】maven-publish插件的使用


    一、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任务列表中看到

      完整代码如下:

     1 // 声明插件
     2 plugins {
     3     id 'maven-publish'
     4 }
     5 
     6 
     7 // 项目group/artifact/version信息
     8 group 'com.test.gradle'
     9 // name 默认项目名
    10 version '1.0-SNAPSHOT'
    11 
    12 
    13 // 打包sourcesJar任务
    14 task sourcesJar(type: Jar, dependsOn: classes) {
    15     classifier = 'sources'
    16     from sourceSets.main.allSource
    17 }
    18 
    19 // 打包javadocJar任务
    20 task javadocJar(type: Jar, dependsOn: javadoc) {
    21     classifier = 'javadoc'
    22     from javadoc.destinationDir
    23 }
    24 
    25 // 解决javadoc打包乱码
    26 javadoc {
    27     options {
    28         encoding "UTF-8"
    29         charSet 'UTF-8'
    30         author true
    31         version true
    32         title "文档大标题"
    33     }
    34 }
    35 
    36 
    37 publishing {
    38     // 发布
    39     publications {
    40         mavenJava(MavenPublication) {
    41             //指定group/artifact/version信息
    42             groupId project.group
    43             artifactId project.name
    44             version project.version
    45             // components.java jar包
    46             // components.web war包
    47             from components.java
    48 
    49             // 增加 sourcesJar、javadocJar 任务
    50             artifact sourcesJar
    51             artifact javadocJar
    52         }
    53     }
    54     // 发布仓库
    55     repositories {
    56    
    57            // 本地仓库位于USER_HOME/.m2/repository
    58            // 
    59         mavenLocal()
    60         // 其他maven仓库
    61         maven { url uri('/Users/h__d/Desktop/1') }
    62         // aliyun镜像仓库
    63 //         maven {
    64 //             // 凭证
    65 //             credentials {
    66 //                 username 'username' // 仓库发布用户名
    67 //                 password 'password' // 仓库发布用户密码
    68 //             }
    69 //             // 地址
    70 //             url 'https://maven.aliyun.com/nexus/content/groups/public/'
    71 //         }
    72     }
    73 }

      发布到配置仓库命令: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

  • 相关阅读:
    [导入]郎咸平在复旦大学的精彩演讲
    [导入]郎咸平介绍
    [导入]郎咸平网络文摘 在线交流论坛
    Delphi7,创建 RGB CMYK颜色分量圆 完整代码
    Excel分类汇总/平均/计数的办法
    Word插入 分节符实现多个页码
    Delphi 7中如何修改Form1: TForm1;
    在delphi 7里怎么给已有的单元文件改名
    Mac下安装mysql后无法启动,提示. ERROR! The server quit without updating PID file(就是账户权限不够)
    pip虚拟环境下倒出安装文件,或者批量导入安装。
  • 原文地址:https://www.cnblogs.com/h--d/p/14768794.html
Copyright © 2020-2023  润新知