您当前的位置: 首页 >  容器

暂无认证

  • 0浏览

    0关注

    92582博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Gradle进阶:6:结合容器进行构建

发布时间:2019-12-19 20:46:42 ,浏览量:0

在这里插入图片描述 这篇文章使用容器方式执行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 UTC
Revision:     fad121066a68c4701acd362daf4287a7c309a0f5

Kotlin:       1.3.50
Groovy:       2.5.8
Ant:          Apache Ant(TM) version 1.10.7 compiled on September 1 2019
JVM:          1.8.0_232 (AdoptOpenJDK 25.232-b09)
OS:           Linux 4.9.184-linuxkit amd64

liumiaocn:jar liumiao$
事前准备:代码准备

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

liumiaocn:jar liumiao$ ls
build.gradle	settings.gradle	src
liumiaocn:jar liumiao$ tree .
.
├── build.gradle
├── settings.gradle
└── src
    └── main
        ├── java
        │   └── com
        │       └── liumiaocn
        │           └── HelloPlugin.java
        └── resources
            └── com
                └── liumiaocn
                    └── resource.xml

8 directories, 4 files
liumiaocn: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.java
package 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$ ls
build.gradle	settings.gradle	src
liumiaocn:jar liumiao$ docker run --rm -v `pwd`:/home/gradle liumiaocn/gradle:jdk8.6.0.1 gradle jar
Starting a Gradle Daemon (subsequent builds will be faster)
> Task :compileJava
> Task :processResources
> Task :classes
> Task :jar

Deprecated 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_warnings

BUILD SUCCESSFUL in 9s
3 actionable tasks: 3 executed
liumiaocn:jar liumiao$

构建结果确认

liumiaocn:jar liumiao$ ls
build		build.gradle	settings.gradle	src
liumiaocn: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.xml

27 directories, 8 files
liumiaocn:jar liumiao$

jar文件结果确认

liumiaocn:jar liumiao$ java -jar build/libs/jarPluginSample-1.0.jar 
Hello, LiuMiao
liumiaocn: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, LiuMiao
liumiaocn:jar liumiao$
关注
打赏
1653961664
查看更多评论
立即登录/注册

微信扫码登录

1.8741s