目录标题
先贴一个链接
gradle的配置方法,里面介绍了gradle如何下载以及如何配置环境变量。
1. 引入
在用RCRS仿真平台的时候,常常因为各种原因导致编译失败,这其中最为常见的原因是网络原因。因为RCRS本身是由国外人所开发的一个平台,其中用到的很多库等都需要VPN才能下载。但是也知道大多数做这个的都是刚刚接触到Linux系统,可能还没有相应的方法访问外网,这也就导致了整个项目运行的过程中苦难重重。本文则是针对项目编译和运行的一些关键问题,进行了相关的介绍,解决了部分由于网络问题导致的编译错误。
2. 项目基础
如果想要深入了解这个项目的运行机制的话,需要用到如下知识点
- gradle构建工具
- bash脚本
- 一些Linux的知识
- JAVA语言
所以,后续如果需要深入学习的话,建议大家可以从这些方向着手。
3. linux换源
linux换源是必要的,因为很多包都需要国内镜像才能使用,所以建议换成阿里源或者清华源,这里自行搜索换源方法。要注意的是关注一下自己使用的linux的版本
4. JAVA环境的配置
对于JAVA环境的配置,我们可以看到官方的JDK上使用的是17版本,这里建议使用apt安装。基于Debian的Linux系统都自带apt,打开终端即可使用。
- 更新软件包索引
sudo apt update
- 安装openjdk-17-jdk
sudo apt install openjdk-17-jdk
- 查看是否安装成功
java -version
这里可以看到版本就行了。
- 配置环境变量
配置环境变量这一步还是挺重要的。配置环境变量有两种,一个是配置文件~/.bashrc
,另一个是配置文件/etc/profile
,建议直接配置整个系统的环境变量。
4.1 区别在于
~/.bashrc:
- 用户级别的配置文件,用于设置当前用户的特定环境变量和执行用户级别的初始化命令。
- 可以设置个人用户的环境变量、自定义别名、设置命令提示符等。
- 每当用户打开一个bash shell时(例如,打开一个新的终端窗口),该文件都会被读取和执行。
- 任何在这个文件中设置的变量只会对当前用户生效。
/etc/profile:
- 系统级别的配置文件,用于设置全局的环境变量和执行系统范围的初始化命令。
- 当用户登录系统时(无论是通过图形界面还是命令行界面),/etc/profile文件都会被首先读取,以加载系-统的环境变量。
- 可以设置系统范围的环境变量、修改PATH等,这些设置将对所有用户生效。
4.2 配置方法
- 用vim打开要修改的文件
sudo vim /etc/profile
- 将下面这两句话复制进去
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
要注意查看一下是否有这个路径,以及bin中是否包含了java的编译器,不然这个配置是无效的。
5. 编译方法
在运行的时候可以采用gradle或者gradlew来运行都是可以的。
- 如果是gradlew的话就是和官方的运行是一样的,可以按照官方指令先
completeBuild
build
,再运行项目。 - 如果是采用gradle来运行的话,就需要自行安装gradle。
- gradle和gradlew本质上来说是一个东西,区别可以自行百度搜索。
5.1 gradlew运行
这个是官方给的方法,分为server和agent端,用到的指令在readme中都有介绍,开头都是./gradlew
。
如果用gradlew来执行,就要考虑到在两个包下面的gradle
文件夹中的配置文件gradle-wrapper.properties。
打开该文件,可以看到
这里的GRADLE_USER_HOME是下载仓库的地方,stributionUrl是下载gradle的链接,所以它会默认下载gradle7.3,而且一键即可配置。但是要注意的是,这个网址显然是外网,可能通过浏览器可以下载得了,但是通过终端基本上是下载不了的。所以我们要进行如下配置
5.1.1 配置GRADLE_USER_HOME
软件会下载到GRADLE_USER_HOME的wrapper/dists的文件夹下面,所以要配置GRADLE_USER_HOME。
首先打开/etc/profile
sudo vim /etc/profile
然后添加上
export GRADLE_USER_HOME=<仓库路径>#请自行配置
记得source一下让它生效。
5.1.2 更换阿里源
还是老样子,那个链接下载不了,就用国内的镜像。
把原先的stributionUrl对应的链接更换成这个。
https://mirrors.aliyun.com/macports/distfiles/gradle/gradle-7.3-bin.zip
这样在输入./gradlew build
或者./gradlew completeBuild
的时候就会下载7.3版本的gradle到你对应GRADLE_USER_HOME文件夹下。
这部分对于客户端和服务器都要修改的。
5.1.3 配置GRADLE环境变量
依然是打开文件/etc/profile
在里面添加
export GRADLE_HOME=<GRADLE_USER_HOME的路径>/wrapper/dists/gradle-7.3-bin/2gom3hf9wc33h06is94o6bx0r/gradle-7.3#这里要注意和自己的路径相匹配
export PATH=$PATH:$GRADLE_HOME/bin
记得生效一下。
最后一定要确保自己的bin文件夹下面确实是有一个名字叫做gradle的可执行文件的。应该是两个文件
5.1.4 更换maven仓库(重要)
完成了上述步骤,你再去试试指令./gradlew build
,其实大概率还是失败的。这是因为在运行这个项目的时候,它会从远端仓库拉取代码,检索对应的库函数并执行,这个与gradle本身是有关的。
在gradle管理一个项目的时候,它的配置都是在项目的根目录的build.gradle下面的。
这里就先看一下rcrs server的根目录,下面包括文件分别是:
- gradlew:Linux下的shell脚本,是gradlew wapper的缩写,对gradle的命令进行了包装.
- gradlew.bat:Windows下的批处理文件
- settings.gradle:里面的内容是
rootProject.name = 'rcrs-server'
,规定了项目的根目录,所以这里也比较建议将服务器和客户端的文件名按照相应的根目录进行修改,最好不要带master。 - build.gradle:这个是最重点的gradle配置文件,主要是配置签名、编译版本、依赖库等,这个依赖库往往都是外网链接,终端也很难下载,所以这个文件是重点修改的地方。
具体就是找到build.gradle
文件的repositories以及花括号的内容。
5.1.4.1 server端
原先仓库如下,但是这个链接里的服务器除非用VPN否则终端基本上是链接不上的,仓库必然下载失败,可以修改成国内可以用的镜像。
repositories {
mavenLocal()
mavenCentral()
maven {
url = 'http://sourceforge.net/projects/jsi/files/m2_repo'
allowInsecureProtocol = true
}
maven {
url = 'https://jitpack.io'
}
}
将原先的repositories和花括号的内容删掉或者注释掉,更换为如下镜像即可。
repositories {
// 使用本地文件系统的仓库,通常不推荐使用
//maven { url 'file:///D:/repos/mavenrepos3.5.4' }
//maven { url "$rootDir/lib/release" }
// 指定查找Maven的本地仓库,通常Gradle会自动配置
mavenLocal()
// 指定查找Maven的私服或第三方镜像仓库
maven { name "Alibaba"; url "https://maven.aliyun.com/repository/public" }
maven { name "Bstek"; url "https://nexus.bsdn.org/content/groups/public/" }
// 指定查找Maven的中央仓库,这是默认的远程仓库
mavenCentral()
// 指定查找Google的远程仓库
google()
}
5.1.4.2 agent端
记得也要将目录和gradle目录名修改为保持一致。
找到build.gradle文件,将这个部分注释或者删除
repositories {
mavenCentral()
maven {
url = 'https://sourceforge.net/projects/jsi/files/m2_repo'
}
maven {
url = 'https://repo.enonic.com/public/'
}
maven {
url 'https://jitpack.io'
}
}
更换为
repositories {
mavenCentral()
// 指定查找Maven的私服或第三方镜像仓库
maven { name "Alibaba"; url "https://maven.aliyun.com/repository/public" }
maven { name "Bstek"; url "https://nexus.bsdn.org/content/groups/public/" }
maven { url = 'https://sourceforge.net/projects/jsi/files/m2_repo' }
maven { url = 'https://repo.enonic.com/public/' }
maven { url 'https://jitpack.io' }
maven {
url = 'https://sourceforge.net/projects/jsi/files/m2_repo'
}
maven {
url = 'https://repo.enonic.com/public/'
}
maven {
url 'https://jitpack.io'
}
// 指定查找Google的远程仓库
google()
jcenter()
}
这样就完全没有问题了。
5.1.5 执行
执行相关命令即可
./gradlew clean
./gradlew build
./gradlew completeBuild
5.2 gradle运行
5.2.1 gradle准备
第二种方法是gradle运行,首先需要下载并安装gradle
这里也可以通过idea来构建,IDEA可以从官网下载或者从snap商店下载。
在下载后设置Gradle Settings
配置好Gradle user home:即下载gradle相关包的位置。
选择好Gradle的版本,我的电脑中是gradle-7.3版本。
然后点击下面红色圈住的内容,构建该项目即可。
5.2.2 运行
gradle build
gradle completeBuild
gradle clean