gradle的二进制版本

创建有用的应用程序后,很可能我们想与其他人共享它。 一种方法是创建一个可以从我们的网站下载的二进制发行版。

这篇博客文章描述了如何满足以下要求的二进制发行版:

  • 我们的二进制分发不得使用所谓的“胖子”方法。 换句话说,我们的应用程序的依赖项不得与我们的应用程序打包到同一jar文件中。
  • 我们的二进制发行版必须包含* nix和Windows操作系统的启动脚本。
  • 我们的二进制发行版的根目录必须包含我们的应用程序的许可证。

让我们开始吧。

补充阅读:

  • Gradle入门:简介可帮助您安装Gradle,描述Gradle构建的基本概念,并描述如何使用Gradle插件为构建提供功能。
  • Gradle入门:我们的第一个Java项目描述了如何使用Gradle创建Java项目并将应用程序打包到可执行jar文件中。
  • Gradle入门:依赖性管理介绍了如何管理Gradle项目的依赖性。

创建一个二进制分布

该应用程序插件是Gradle插件,它使我们能够运行我们的应用程序,进行安装,并创建不使用“胖子”方法的二进制发行版。

我们可以通过对在Gradle入门教程的上一部分中创建的示例应用程序的build.gradle文件进行以下更改来创建二进制分发:

  1. 删除jar任务的配置。
  2. 将应用程序插件应用于我们的项目。
  3. 通过设置mainClassName属性的值来配置应用程序的主类。

在对build.gradle文件进行了这些更改之后,其外观如下(突出显示了相关部分):

apply plugin: 'application'
apply plugin: 'java'repositories {mavenCentral()
}dependencies {compile 'log4j:log4j:1.2.17'testCompile 'junit:junit:4.11'
}mainClassName = 'net.petrikainulainen.gradle.HelloWorld'

该应用程序插件将五个任务添加到我们的项目中:

  • 运行任务将启动应用程序。
  • startScripts任务将启动脚本创建到build / scripts目录。 该任务为Windows和* nix操作系统创建启动脚本。
  • installApp任务将应用程序安装到build / install / [项目名称]目录中。
  • distZip任务创建二进制发行版,并将其打包为可从build / distributions目录中找到的zip文件。
  • distTar任务创建二进制发行版,并将其打包到可从build / distributions目录中找到的tar文件中。

我们可以通过在项目的根目录中运行以下命令之一来创建二进制分发: gradle distZipgradle distTar 。 如果我们创建打包为zip文件的二进制分发,请参见以下输出:

> gradle distZip
:compileJava
:processResources
:classes
:jar
:startScripts
:distZipBUILD SUCCESSFULTotal time: 4.679 secs

如果解压缩由应用程序插件创建的已创建二进制发行版,则将获得以下目录结构:

  • bin目录包含启动脚本。
  • lib目录包含我们应用程序的jar文件及其依赖项。

您可以通过阅读第45章“ Gradle用户指南”中的“应用程序插件”来获取有关应用程序插件的更多信息。

现在,我们可以创建一个满足几乎所有需求的二进制发行版。 但是,我们仍然需要将应用程序的许可证添加到二进制分发的根目录中。 让我们继续前进,找出我们如何做到这一点。

将我们的应用程序的许可证文件添加到二进制分发中

通过执行以下步骤,我们可以将应用程序的许可证添加到二进制分发中:

  1. 创建一个任务,将许可证文件从我们项目的根目录复制到构建目录。
  2. 将许可证文件添加到创建的二进制分发的根目录中。

让我们继续仔细研究这些步骤。

将许可证文件复制到构建目录

包含我们的应用程序许可证的文件的名称为LICENSE ,可以从我们项目的根目录中找到。

我们可以按照以下步骤将许可证文件复制到构建目录:

  1. 创建一个新的Copy任务,称为copyLicense
  2. 使用CopySpec接口的from()方法配置源文件。 将字符串“ LICENSE”作为方法参数传递。
  3. 使用CopySpec接口的into()方法配置目标目录。 将$ buildDir属性的值作为方法参数传递。

完成这些步骤后, build.gradle文件如下所示(相关部分突出显示):

apply plugin: 'application'
apply plugin: 'java'repositories {mavenCentral()
}dependencies {compile 'log4j:log4j:1.2.17'testCompile 'junit:junit:4.11'
}mainClassName = 'net.petrikainulainen.gradle.HelloWorld'task copyLicense(type: Copy) {from "LICENSE"into "$buildDir"
}

附加信息:

  • 复制任务的API文档
  • 《 Gradle用户指南》的16.6节复制文件

现在,我们已经创建了一个任务,该任务将LICENSE文件从项目的根目录复制到构建目录。 但是,当我们在项目的根目录中运行gradle distZip命令时,将看到以下输出:

> gradle distZip
:compileJava
:processResources
:classes
:jar
:startScripts
:distZipBUILD SUCCESSFULTotal time: 4.679 secs

换句话说,我们的新任务不会被调用,这自然意味着许可证文件不包含在我们的二进制发行版中。 让我们解决这个问题。

将许可证文件添加到二进制分发版

我们可以按照以下步骤将许可证文件添加到创建的二进制分发中:

  1. 通过从声明中删除字符串“(类型:复制)”,将copyLicense任务从“ 复制”任务转换为“常规” Gradle任务。
  2. 通过执行以下步骤,修改copyLicense任务的实现:
    1. 配置copyLicense任务的输出。 创建一个新的File对象,该对象指向从构建目录中找到的许可证文件,并将其设置为outputs.file属性的值。
    2. 将许可证文件从项目的根目录复制到构建目录。
  3. 应用程序插件为我们的项目设置了一个名为applicationDistributionCopySpec属性。 我们可以使用它来将许可证文件包括到创建的二进制发行版中。 我们可以按照以下步骤进行操作:
    1. 使用CopySpec接口的from()方法配置许可证文件的位置,并将copyLicense任务的输出作为方法参数传递。
    2. 使用CopySpec接口的into()方法配置目标目录,并传递一个空String作为方法参数。

完成这些步骤后, build.gradle文件如下所示(相关部分突出显示):

apply plugin: 'application'
apply plugin: 'java'repositories {mavenCentral()
}dependencies {compile 'log4j:log4j:1.2.17'testCompile 'junit:junit:4.11'
}mainClassName = 'net.petrikainulainen.gradle.HelloWorld'task copyLicense {outputs.file new File("$buildDir/LICENSE")doLast {copy {from "LICENSE"into "$buildDir"}}
}applicationDistribution.from(copyLicense) {into ""
}

补充阅读:

  • TaskdoLast()操作的API文档
  • 第45.5节在分发的Gradle用户指南中包括其他资源
  • ApplicationPluginConvention类的Groovydoc

当在项目的根目录中运行命令gradle distZip时 ,将看到以下输出:

> gradle distZip
:copyLicense
:compileJava
:processResources
:classes
:jar
:startScripts
:distZipBUILD SUCCESSFULTotal time: 5.594 secs

如我们所见,现在将调用copyLicense任务,并且如果解包二进制分发包,则会注意到LICENSE文件是从其根目录中找到的。

让我们继续总结一下我们从此博客文章中学到的知识。

摘要

这篇博客文章教会了我们三件事:

  • 我们了解到可以使用应用程序插件创建二进制发行版。
  • 我们学习了如何使用复制任务将文件从源目录复制到目标目录。
  • 我们了解了如何将文件添加到由应用程序插件创建的二进制分发中。

如果您想玩这个博客文章的示例应用程序, 可以从Github获得 。

翻译自: https://www.javacodegeeks.com/2014/09/getting-started-with-gradle-creating-a-binary-distribution.html

gradle的二进制版本

gradle的二进制版本_Gradle入门:创建二进制分发相关推荐

  1. gradle 指定springcloud 版本_Gradle初探

    1.安装gradle brew install gradle 2.Hello World 1.创建构建脚本文件:build.gradle 2.编写构建脚本: task hello{ doLast{ p ...

  2. Gradle入门:创建二进制分发

    创建有用的应用程序之后,很可能我们想与其他人共享它. 一种方法是创建一个可以从我们的网站下载的二进制发行版. 这篇博客文章描述了如何满足以下要求的二进制发行版: 我们的二进制分发绝对不能使用所谓的&q ...

  3. Gradle入门系列(4):创建二进制发布版本

    本文由 伯乐在线 - JustinWu 翻译.未经许可,禁止转载! 英文出处:petrikainulainen.欢迎加入翻译组. 在创建了一个实用的应用程序之后,我们可能想将其与他人分享.其中一种方式 ...

  4. gradle构建多模块项目_Gradle入门:创建多项目构建

    gradle构建多模块项目 尽管我们可以仅使用一个模块来创建一个运行中的应用程序,但有时将我们的应用程序划分为多个较小的模块是比较明智​​的. 因为这是一个相当普遍的用例,所以每个自重的构建工具都必须 ...

  5. MySQL部署2002_MySQL入门02-MySQL二进制版本快速部署

    在上篇文章 MySQL入门01-MySQL源码安装 中,我们介绍了MySQL源码安装的方法. 源码安装虽然有着更加灵活和更加优化等诸多优势.但源码编译安装部署的过程相对复杂,而且整个过程所花费的时间很 ...

  6. linux mysql5.7.11_在Linux中以命令行方式安装 MySQL 5.7.11 for Linux Generic 二进制版本

    转至: http://www.cnblogs.com/cyberniuniu/p/5273961.html MySQL 目前的最新版本是 5.7.11,在 Linux 下提供特定发行版安装包(如 .r ...

  7. MYSQL 5.7.26 二进制版本安装

    原文链接:https://www.modb.pro/db/23103?cyn 摘要:mysql数据库的二进制安装方式 MYSQL 5.7.26 二进制版本安装 配置阿里云的yum环境 mv /etc/ ...

  8. mysql5.7.11 linux_CentOS 7 中以命令行方式安装 MySQL 5.7.11 for Linux Generic 二进制版本教程详解...

    MySQL 目前的最新版本是 5.7.11,在 Linux 下提供特定发行版安装包(如 .rpm)以及二进制通用版安装包(.tar.gz).一般情况下,很多项目都倾向于采用二进制通用安装包形式来进行安 ...

  9. linux二进制安装包制作,linux下二进制安装包的创建

    一个合格的产品必须要有一个像样的安装包,每次拷来拷去显得太不上档次,哈哈...也不便于用户使用. 闲话不多扯,直奔主题,看过来吧,程序猿(媛)们:本文主要介绍二进制安装包的创建和使用: 1.首先介绍二 ...

最新文章

  1. C++_重载new,delete
  2. 机器学习常见的几个误区--逻辑回归的变量之间如果线性相关
  3. linux ldconfig 与 /etc/ld.so.conf 动态函数库配置
  4. 一致性哈希算法——算法解决的核心问题是当slot数发生变化时,能够尽量少的移动数据...
  5. VS 中配置使用Visual SVN系列 五:SVN Client的配置和使用
  6. java 自定义注解以及获得注解的值
  7. synchronized使用和原理全解
  8. 怎么取消XP粘滞键(StickyKeys)
  9. 【图像处理】MATLAB:彩色图像介绍
  10. 全新AI内参:量子位精心打磨,最新产业资讯、科研进展一文呈现
  11. python 赋值、浅拷贝、深拷贝学习实践
  12. network 一级,二级,子域名
  13. 浙江大学黄杨思博计算机学院,浙江大学节能减排社会实践与科技竞赛成功-浙江大学本科生院.DOC...
  14. 《G档案》中关于游戏程序设计的文章
  15. 华为鸿蒙系统英语报纸_“鸿蒙”系统的英文名叫这个!华为注册的这些名字都该怎么翻译?...
  16. Fuzzy kmeans
  17. Springboot Failed to parse configuration class [x]
  18. 微信公众号文章采集的一些基础概念
  19. Android -- 传感器使用示例, 用方向传感器做指南针
  20. 用计算机弹奏若当来世,若当来世简谱(歌词)-马里奥、冥月演唱-动画片《狐妖小红娘 第三季》片头曲...

热门文章

  1. 【2018.4.7】模拟赛之二-ssl2383 睡眠【水题】
  2. ssl1615-Frogger【图论,最小生成树,并查集】
  3. 2021 CCPC E. 被遗忘的计划(循环卷积+快速幂)
  4. Hadoop入门(二十三)Mapreduce的求数量最大程序
  5. 面试官让我讲下线程的TIMED_WAITING状态,我又笑了
  6. 面试时如何介绍自己的项目经验
  7. 揭开Java 泛型类型擦除神秘面纱
  8. 干货 | Tomcat 连接数与线程池详解
  9. Java IO: 文件
  10. Tomcat启动超时问题Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds