Gradle进阶:6:结合容器进行构建
发布日期:2021-06-30 20:15:56 浏览次数:2 分类:技术文章

本文共 4412 字,大约阅读时间需要 14 分钟。

在这里插入图片描述

这篇文章使用容器方式执行Gradle的构建,使用Gradle对示例代码进行jar包的构建并验证结果,来说明容器方式如何进行Gradle构建。

Gradle镜像

可以使用Gradle官方镜像,也可使用liumiaocn/gradle下的镜像,此镜像也是完全基于官方镜像的方式做成。

镜像下载

镜像下载: docker pull liumiaocn/gradle:jdk8.6.0.1

版本确认

版本确认:docker run --rm liumiaocn/gradle:jdk8.6.0.1 gradle --version

可以看到此Gradle的版本为6.0.1

liumiaocn:jar liumiao$ docker run --rm liumiaocn/gradle:jdk8.6.0.1 gradle --version------------------------------------------------------------Gradle 6.0.1------------------------------------------------------------Build time:   2019-11-18 20:25:01 UTCRevision:     fad121066a68c4701acd362daf4287a7c309a0f5Kotlin:       1.3.50Groovy:       2.5.8Ant:          Apache Ant(TM) version 1.10.7 compiled on September 1 2019JVM:          1.8.0_232 (AdoptOpenJDK 25.232-b09)OS:           Linux 4.9.184-linuxkit amd64liumiaocn:jar liumiao$

事前准备:代码准备

做一个简单的HelloWorld的java类,然后将其打成一个jar文件,具体的文件结构如下所示

liumiaocn:jar liumiao$ lsbuild.gradle	settings.gradle	srcliumiaocn:jar liumiao$ tree ..├── build.gradle├── settings.gradle└── src    └── main        ├── java        │   └── com        │       └── liumiaocn        │           └── HelloPlugin.java        └── resources            └── com                └── liumiaocn                    └── resource.xml8 directories, 4 filesliumiaocn:jar liumiao$

settings.gradle

liumiaocn:jar liumiao$ cat settings.gradle rootProject.name = 'jarPluginSample'liumiaocn:jar liumiao$
  • rootProject.name在创建jar文件时根据约定会被使用。

build.gradle

liumiaocn:jar liumiao$ cat build.gradle apply plugin: 'java'version = '1.0'jar {    manifest {        attributes 'Implementation-Title': 'Gradle plugin sample: create jar distribution',                   'Implementation-Version': version,                   'Main-Class': 'com.liumiaocn.HelloPlugin',                   'Created-By': 'liumiaocn'    }}liumiaocn:jar liumiao$
  • apply plugin: ‘java’:是引入java plugin支持唯一需要做的事情
  • version:在生成的jar文件中会按照约定生成在jar文件名中
  • jar{}: jar是java plugin所实现的task之一,这里使用它直接用来生成jar文件
  • manifest{}:用于设定MANIFEST.MF的内容
  • Main-Class: 指定jar文件中包含main方法的类

resource文件

liumiaocn:jar liumiao$ cat src/main/resources/com/liumiaocn/resource.xml 
liumiaocn:jar liumiao$
  • 仅仅是一个示例,用于演示在jar文件中资源文件也被打包的过程

HelloWorld类

liumiaocn:jar liumiao$ cat src/main/java/com/liumiaocn/HelloPlugin.javapackage com.liumiaocn;public class HelloPlugin {    public static void main(String[] args) {        System.out.println("Hello, LiuMiao");    }}liumiaocn:jar liumiao$

构建

做好上述准备之后,直接将当前示例代码目录挂载至镜像的WORKDIR(/home/gradle)下,执行gradle jar命令即可。

执行命令:docker run --rm -v `pwd`:/home/gradle liumiaocn/gradle:jdk8.6.0.1 gradle jar

liumiaocn:jar liumiao$ lsbuild.gradle	settings.gradle	srcliumiaocn:jar liumiao$ docker run --rm -v `pwd`:/home/gradle liumiaocn/gradle:jdk8.6.0.1 gradle jarStarting a Gradle Daemon (subsequent builds will be faster)> Task :compileJava> Task :processResources> Task :classes> Task :jarDeprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.Use '--warning-mode all' to show the individual deprecation warnings.See https://docs.gradle.org/6.0.1/userguide/command_line_interface.html#sec:command_line_warningsBUILD SUCCESSFUL in 9s3 actionable tasks: 3 executedliumiaocn:jar liumiao$

构建结果确认

liumiaocn:jar liumiao$ lsbuild		build.gradle	settings.gradle	srcliumiaocn:jar liumiao$ tree ..├── build│   ├── classes│   │   └── java│   │       └── main│   │           └── com│   │               └── liumiaocn│   │                   └── HelloPlugin.class│   ├── generated│   │   └── sources│   │       └── annotationProcessor│   │           └── java│   │               └── main│   ├── libs│   │   └── jarPluginSample-1.0.jar│   ├── resources│   │   └── main│   │       └── com│   │           └── liumiaocn│   │               └── resource.xml│   └── tmp│       ├── compileJava│       └── jar│           └── MANIFEST.MF├── build.gradle├── settings.gradle└── src    └── main        ├── java        │   └── com        │       └── liumiaocn        │           └── HelloPlugin.java        └── resources            └── com                └── liumiaocn                    └── resource.xml27 directories, 8 filesliumiaocn:jar liumiao$

jar文件结果确认

liumiaocn:jar liumiao$ java -jar build/libs/jarPluginSample-1.0.jar Hello, LiuMiaoliumiaocn:jar liumiao$

本地没有JDK或者JRE环境,直接使用此Gradle镜像也是可以同样确认的

liumiaocn:jar liumiao$ docker run --rm -v `pwd`:/home/gradle liumiaocn/gradle:jdk8.6.0.1 java -jar build/libs/jarPluginSample-1.0.jar Hello, LiuMiaoliumiaocn:jar liumiao$

转载地址:https://liumiaocn.blog.csdn.net/article/details/103614201 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Gradle基础:13:使用本地文件方式的gradlew
下一篇:Android应用构建:10:使用sdkmanager管理sdk

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月19日 15时22分27秒