Jenkins系列:4、wsl的Jenkins构建Java工件生成jar包
文章目录
1. 前言
接下来我们使用gradle方式创建项目并打包,然后命令行方式来执行整个打包过程,这样方便后续将构建打包过程放入Jenkins管理,在服务器上也可以安装Gradle进行打包,便于迁移,之所以使用gradle而没有选择ant和maven也是体验下来感觉gradle相对来说使用更简单一些,而且Android项目也支持这种方式。
2. windows下安装配置gradle
2.1 下载安装
在Gradle官网https://gradle.org/releases下载最新版本的Gradle压缩包并解压。
2.2 设置环境变量
环境变量中增加名为GRADLE_HOME
的变量名,值为Gralde的解压路径,例如D:\Gradle
在path
的后追加%GRADLE_HOME%\bin;
.(或者直接添加原始安装路径到path即可)
2.3 验证安装
打开Windows命令行工具,输入gradle -v
,显示版本号说明安装成功
2.4 修改默认缓存目录
修改Gradle默认缓存目录可使用命令gradle -g 目录路径
,例如gradle -g D:\Gradle\.gradle
2.5 修改全局默认仓库
进入Gradle安装目录下的init.d
文件夹,新建init.gradle
文件,在此文件中输入
allprojects {
repositories {
maven {
url 'http://maven.aliyun.com/nexus/content/groups/public/'
}
}
}
2.6 转换maven项目为gradle项目(非必须)
在maven根目录下运行
gradle init --type pom
2.7 idea设置关联外部gradle
文件-》设置-》构建、执行、部署-》构建工具-》Gradle之后指定Gradle为我们外部安装的即可,否则这里设置后会自动下载装gradle。
3. idea创建gradle项目并使用gradle打jar包
3.1 idea创建gradle项目
新建项目时选择Gradle即可:
之后创建软件包等和普通的Java项目类似,之后我们创建一个简单的打印“hello world”的项目:
3.2 修改gradle添加打jar包
这里最好学习一下gradle的使用(打jar包并且命令化感觉还是有一些门槛,就像打包编译c/c++一样需要学习一些类似make/cmake工具的使用,总结一些模板文件;相较来说,go语言直接自带工具打包更加友好一些,配置依赖也相对更简便一些):https://gradle.org/
plugins {
id 'java'
}
group 'org.example'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
}
test {
useJUnitPlatform()
}
jar {
String someString = ''
configurations.runtime.each {someString = someString + " lib\\"+it.name}
manifest {
attributes 'Main-Class': 'com.tsl.protobuf.Test'
attributes 'Class-Path': someString
}
}
3.3 执行gradle命令打包
在Windows下打开cmd到项目build.gradle目录执行如下命令打包(这个是没有依赖包打包到一个jar包的情况下):
gradlew jar
之后在build/lib目录下会生成jar包,直接运行:
接下来我们创建简单的流水线打jar包即可。
4. wsl下的Jenkins创建流水线调用Windows下gradlew命令打jar包
实际情况下我们可能更多的还是在服务器上打包,因此在服务器上安装Jenkins、gradle即可,这里由于我是在Windows上做开发和测试,在wsl上安装了Jenkins,因此这里演示时是这种情况。
4.1 创建自由项目
4.2 完成项目描述和钉钉机器人配置
4.3 设置源码管理
4.4 构建触发
这里不多说了,和之前的总结类似,根据需求一般定时触发或者GitHub等仓库配置hook在提交时触发等。
4.5 构建环境
根据需求添加即可,我这里很少用到。
4.6 构建
5. 结果展示
钉钉也会同步发送整个过程:
6. 最后
接下来可以添加一些步骤将多个项目的构建结果放到一个统一的目录中,便于打包压缩以及将该目录通过nginx配置成可下载的便于发布下载;再比如将这些过程docker化,这样便于部署到不同服务器或位置,对这些扩展可能后面有时间会系统总结一下,没时间的话可能会先放一放,这些在后续一些总结中可能会零零散散的展现到。下一节将总结说明如何将Qt项目通过qmke或cmake编译后打包成exe然后上传到服务器发布,触发则通过配置gitee的hook方式来触发,本地开发完后提交到gitee就会触发该构建和上传发布的过程。
参考:
https://www.jianshu.com/p/578b045d528f
https://blog.csdn.net/moxiaoya1314/article/details/79953504
https://gradle.org/