【HIT-软件构造】使用Gradle脱离IDE环境

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

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

 

Gradle的安装和配置

下载地址:https://gradle.org/install/

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

https://blog.csdn.net/u011510678/article/details/79589944

https://blog.csdn.net/zhaokai0130/article/details/81008719

 

构建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 plugin
Enter selection (default: basic) [1..4] 2

Select implementation language:
  1: C++
  2: Groovy
  3: Java
  4: Kotlin
  5: Scala
  6: Swift
Enter selection (default: Java) [1..6] 3

Split functionality across multiple subprojects?:
  1: no - only one application project
  2: yes - application and library projects
Enter selection (default: no - only one application project) [1..2] 1

Select build script DSL:
  1: Groovy
  2: Kotlin
Enter selection (default: Groovy) [1..2] 1

Select test framework:
  1: JUnit 4
  2: TestNG
  3: Spock
  4: JUnit Jupiter
Enter selection (default: JUnit 4) [1..4] 1

Project name (default: testgradle): gradletest
Source package (default: gradletest): gradletest

> Task :init
Get more help with your project: https://docs.gradle.org/7.0.2/samples/sample_building_java_applications.html

BUILD SUCCESSFUL in 1m 24s
2 actionable tasks: 2 executed

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

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

D:\java\sourse\testgradle>tree
卷 Data 的文件夹 PATH 列表
卷序列号为 2CF7-E288
D:.
├─.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

(其中各个文件的作用可以参考文章:https://www.jianshu.com/p/f33bb06e447e)

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

 

更改目录结构

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,如有需要则更改为其他目录。

参考文章:https://www.cnblogs.com/syrgdm/p/13198130.html

 

编写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'])
}

参考文章:https://blog.csdn.net/qq_31945977/article/details/81778044

 

放置代码并进行build

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

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

 

 

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

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

测试参考文章:https://blog.csdn.net/ashencode/article/details/82177987


注意事项

(1)lib应在app目录下。

参考文章:https://blog.csdn.net/liangzhihao1995/article/details/52901051

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

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

参考文章:https://blog.csdn.net/jiangguangchao/article/details/106673062

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值