博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【HIT-软件构造】使用Gradle脱离IDE环境
阅读量:2055 次
发布时间:2019-04-28

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

      在软件构造实验中,我们将代码提交到GitHub仓库前,实验还要求我们使用其他工具build我们的实验代码以脱离环境,这些工具包括Ant 、Maven 、Gradle、Travis-CI等 。

      然而这些构建工具不论是在线的还是离线的,都需要基于Groovy的DSL或xml语言来编写构建配置文件,还需要组织成maven特有的项目目录结构。由于我们并没有时间从头学习这些语言,再加上网上资料大多是两年以前发布的,有些参考性较低,想要在短时间内入手并且使用这些工具十分困难。本人经过艰难摸索,找到了简单使用Gradle进行脱离环境的方法。为了让大家少走弯路,以专门针对软件构造课程的方式,包括使用方法和注意事项,在此分享给大家。

 

Gradle的安装和配置

下载地址:

安装很简单,网上有很多教程,只需要注意环境变量的配置,这里分享两个安装教程:

 

构建Gradle项目

Gradle安装完成后我们需要先建立起Gradle项目骨架(我安装的版本是7.0.2):

首先创建一个我们要作为Gradle项目的目录(这里以testgradle为例)

从cmd进入该目录,使用指令gradle init构建基本骨架

 

然后选择我们需要的配置

Select type of project to generate:  1: basic  2: application  3: library  4: Gradle pluginEnter selection (default: basic) [1..4] 2Select implementation language:  1: C++  2: Groovy  3: Java  4: Kotlin  5: Scala  6: SwiftEnter selection (default: Java) [1..6] 3Split functionality across multiple subprojects?:  1: no - only one application project  2: yes - application and library projectsEnter selection (default: no - only one application project) [1..2] 1Select build script DSL:  1: Groovy  2: KotlinEnter selection (default: Groovy) [1..2] 1Select test framework:  1: JUnit 4  2: TestNG  3: Spock  4: JUnit JupiterEnter selection (default: JUnit 4) [1..4] 1Project name (default: testgradle): gradletestSource package (default: gradletest): gradletest> Task :initGet more help with your project: https://docs.gradle.org/7.0.2/samples/sample_building_java_applications.htmlBUILD SUCCESSFUL in 1m 24s2 actionable tasks: 2 executed

完成后,我们可以看到testgradle目录下出现了构建的基本骨架

在cmd内testgradle目录下输入tree可以看到目录结构,可以看出基本为maven结构

D:\java\sourse\testgradle>tree卷 Data 的文件夹 PATH 列表卷序列号为 2CF7-E288D:.├─.gradle│  ├─7.0.2│  │  ├─dependencies-accessors│  │  ├─executionHistory│  │  ├─fileChanges│  │  ├─fileHashes│  │  └─vcsMetadata-1│  ├─buildOutputCleanup│  ├─checksums│  └─vcs-1├─app│  └─src│      ├─main│      │  ├─java│      │  │  └─gradletest│      │  └─resources│      └─test│          ├─java│          │  └─gradletest│          └─resources└─gradle    └─wrapper

(其中各个文件的作用可以参考文章:)

但是这与我们的实验中要求的项目目录结构不同,所以我们需要更改。

 

更改目录结构

maven原目录结构中主程序放在src/main/java下,测试程序放在src/test/java下,如果我们直接将src和test内的文件分别放在src/main/java和src/test/java中,其中的读取和写文件操作地址会出错。于是我们可以改变默认的目录结构。

我们使用记事本打开app目录下的build.gradle,在其中加上

sourceSets{

    main{
        java { srcDirs=['src'] }
    }
    test{
        java { srcDirs=['test'] }
    }
}

我们将默认读取主程序目录由src/main/java改为app/src,将默认读取测试程序目录由src/test/java改为app/test,如有需要则更改为其他目录。

参考文章:

 

编写build.gradle

为了完成build,我们需要在build.gradle上做一些工作

修改编译编码格式为UTF-8

如果不修改编码格式,Gradle会默认按GDK编码编译,其中的汉字会被识为乱码

于是我们在build.gradle中添加

tasks.withType(JavaCompile) {

    options.encoding = "UTF-8"
}

修改编译编码格式为UTF-8。

 

加载本地指定目录jar包

实验中我们的jar包都放在lib文件夹下,为了在编译时能够使用到这些jar包,我们需要将lib加载。在build.gradle中的dependencies中添加

implementation fileTree(dir:'lib',include:['*.jar'])

即(其他部分为创建时默认部分)

dependencies {

    // Use JUnit test framework.
    testImplementation 'junit:junit:4.13.1'

    // This dependency is used by the application.

    implementation 'com.google.guava:guava:30.0-jre'

    implementation fileTree(dir:'lib',include:['*.jar'])

}

参考文章:

 

放置代码并进行build

将我们的实验目录复制到app目录下,其中原src文件将被替换掉。

cmd中在gradle项目目录下在输入gradle build,gradle会对我们的代码进行build,并会打印提示信息。

 

 

完成后在app/build/classes目录下生成各.java文件编译后的.class文件

若测试出错,会在app/build/reports/tests/test下产生index.html网页测试报告

测试参考文章:


注意事项

(1)lib应在app目录下。

参考文章:

(2)若我们使用网上的教程提供的build.gradle出现Could not find method XXX() for arguments [YYY] on object of type DefaultDependencyHandler问题,可能是版本更换导致DSL语言不可用。

如compile和implementation,因为版本更换高版本使用implementation,而不能识别compile。

参考文章:

 

 

转载地址:http://lnnlf.baihongyu.com/

你可能感兴趣的文章
Contour 学习笔记(一):使用 Contour 接管 Kubernetes 的南北流量
查看>>
K8s 学习者绝对不能错过的最全知识图谱(内含 58个知识点链接)
查看>>
Contour 学习笔记(一):使用 Contour 接管 Kubernetes 的南北流量
查看>>
Contour 学习笔记(二):使用级联功能实现蓝绿部署和金丝雀发布
查看>>
Kubectl 的替代品:kubeman
查看>>
以后别人再问你什么是 Istio,就把这篇文章甩给他
查看>>
新书推荐 |《Prometheus监控实战》
查看>>
Tekton Pipeline 教程
查看>>
Istio 1.3 发布,HTTP 遥测不再需要 Mixer
查看>>
Kubernetes Dashboard 终结者:KubeSphere
查看>>
AdGuard Home 安装使用教程
查看>>
Porter:面向裸金属环境的 Kubernetes 开源负载均衡器
查看>>
Kubernetes Dashboard 终结者:KubeSphere
查看>>
手把手教你部署 Istio 1.3
查看>>
CentOS 8 都发布了,你还不会用 nftables?
查看>>
一点也不流氓的搜狗输入法皮肤
查看>>
Grafana 6.4 正式发布!
查看>>
etcd 性能测试与调优
查看>>
Docker 大势已去,Podman 万岁
查看>>
Podman 使用指南
查看>>