南京网站建设公司大全,网站建设的基本因素是什么,手机网站首页新闻模板,网络营销师报名官网创建有用的应用程序之后#xff0c;很可能我们想与其他人共享它。 一种方法是创建一个可以从我们的网站下载的二进制发行版。 这篇博客文章描述了如何满足以下要求的二进制发行版#xff1a; 我们的二进制分发绝对不能使用所谓的“胖子”方法。 换句话说#xff0c;我们的… 创建有用的应用程序之后很可能我们想与其他人共享它。 一种方法是创建一个可以从我们的网站下载的二进制发行版。 这篇博客文章描述了如何满足以下要求的二进制发行版 我们的二进制分发绝对不能使用所谓的“胖子”方法。 换句话说我们的应用程序的依赖项不得与我们的应用程序打包到同一jar文件中。 我们的二进制发行版必须包含* nix和Windows操作系统的启动脚本。 我们的二进制发行版的根目录必须包含我们的应用程序的许可证。 让我们开始吧。 补充阅读 Gradle入门简介可帮助您安装Gradle描述Gradle构建的基本概念并描述如何使用Gradle插件为构建提供功能。 Gradle入门我们的第一个Java项目描述了如何使用Gradle创建Java项目并将应用程序打包到可执行jar文件中。 Gradle入门依赖性管理介绍了如何管理Gradle项目的依赖性。 创建一个二进制分布 该应用程序插件是Gradle插件它使我们可以运行我们的应用程序进行安装并创建不使用“胖子”方法的二进制发行版。 我们可以通过对在Gradle入门教程的上一部分中创建的示例应用程序的build.gradle文件进行以下更改来创建二进制分发 删除jar任务的配置。 将应用程序插件应用于我们的项目。 通过设置mainClassName属性的值来配置应用程序的主类。 在对build.gradle文件进行了这些更改之后它看起来如下所示相关部分已突出显示 apply plugin: application
apply plugin: javarepositories {mavenCentral()
}dependencies {compile log4j:log4j:1.2.17testCompile 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 distZip或gradle distTar 。 如果我们创建打包为zip文件的二进制分发请参见以下输出 gradle distZip
:compileJava
:processResources
:classes
:jar
:startScripts
:distZipBUILD SUCCESSFULTotal time: 4.679 secs 如果解压缩由应用程序插件创建的已创建二进制发行版则将获得以下目录结构 bin目录包含启动脚本。 lib目录包含我们应用程序的jar文件及其依赖项。 您可以通过阅读第45章“ Gradle用户指南”中的应用程序插件来获取有关应用程序插件的更多信息。 现在我们可以创建一个满足几乎所有需求的二进制发行版。 但是我们仍然需要将应用程序的许可证添加到二进制分发的根目录中。 让我们继续前进找出我们如何做到这一点。 将我们的应用程序的许可证文件添加到二进制分发中 通过执行以下步骤我们可以将应用程序的许可证添加到二进制分发中 创建一个任务将许可证文件从我们项目的根目录复制到构建目录。 将许可证文件添加到创建的二进制分发的根目录中。 让我们继续仔细研究这些步骤。 将许可证文件复制到构建目录 包含我们的应用程序许可证的文件的名称为LICENSE 可以从我们项目的根目录中找到。 我们可以按照以下步骤将许可证文件复制到构建目录 创建一个新的Copy任务称为copyLicense 。 使用CopySpec接口的from方法配置源文件。 将字符串“ LICENSE”作为方法参数传递。 使用CopySpec接口的into方法配置目标目录。 将$ buildDir属性的值作为方法参数传递。 完成这些步骤后 build.gradle文件如下所示相关部分突出显示 apply plugin: application
apply plugin: javarepositories {mavenCentral()
}dependencies {compile log4j:log4j:1.2.17testCompile junit:junit:4.11
}mainClassName net.petrikainulainen.gradle.HelloWorldtask copyLicense(type: Copy) {from LICENSEinto $buildDir
} 附加信息 复制任务的API文档 《 Gradle用户指南》的16.6节复制文件 现在我们创建了一个任务该任务将LICENSE文件从项目的根目录复制到构建目录。 但是当在项目的根目录中运行命令gradle distZip时 将看到以下输出 gradle distZip
:compileJava
:processResources
:classes
:jar
:startScripts
:distZipBUILD SUCCESSFULTotal time: 4.679 secs 换句话说我们的新任务不会被调用这自然意味着许可证文件不包含在我们的二进制发行版中。 让我们解决这个问题。 将许可证文件添加到二进制分发版 我们可以按照以下步骤将许可证文件添加到创建的二进制分发中 通过从声明中删除字符串“类型复制”将copyLicense任务从“ 复制”任务转换为“常规” Gradle任务。 通过执行以下步骤修改copyLicense任务的实现 配置copyLicense任务的输出。 创建一个新的File对象该对象指向从构建目录中找到的许可证文件并将其设置为outputs.file属性的值。 将许可证文件从项目的根目录复制到构建目录。 应用程序插件为我们的项目设置了一个名为applicationDistribution的CopySpec属性。 我们可以使用它来将许可证文件包括到创建的二进制发行版中。 我们可以按照以下步骤进行操作 使用CopySpec接口的from方法配置许可证文件的位置并将copyLicense任务的输出作为方法参数传递。 使用CopySpec接口的into方法配置目标目录并传递一个空String作为方法参数。 完成这些步骤后 build.gradle文件如下所示相关部分突出显示 apply plugin: application
apply plugin: javarepositories {mavenCentral()
}dependencies {compile log4j:log4j:1.2.17testCompile junit:junit:4.11
}mainClassName net.petrikainulainen.gradle.HelloWorldtask copyLicense {outputs.file new File($buildDir/LICENSE)doLast {copy {from LICENSEinto $buildDir}}
}applicationDistribution.from(copyLicense) {into
} 补充阅读 Task的doLast操作的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