如何通过Jenkins任务运行本地磁盘中的Jar包?
Jenkins构建并运行可执行Jar包解决方案
现有背景
已创建Jenkins任务从GitHub拉取代码,通过Maven构建生成带依赖的Jar包到本地指定路径,但尝试用Shell命令运行Jar未成功。项目pom.xml配置如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>Backend_Automation</artifactId> <version>1.0-SNAPSHOT</version> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>11</source> <target>11</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass>com.vodafone.hackathon.runner.CoreRunner</mainClass> </manifest> </archive> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <packaging>jar</packaging> <name>Backend_Automation</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> </dependency> </dependencies> </project>
步骤1:确保构建任务正确生成Jar包
从pom.xml可以看到,项目使用maven-assembly-plugin生成包含所有依赖的可执行Jar,默认会在项目的target目录下生成名为Backend_Automation-1.0-SNAPSHOT-jar-with-dependencies.jar的文件。
在构建任务中,执行正确的Maven命令:
mvn clean package
如果需要将Jar复制到指定本地路径,添加Shell步骤:
# 替换为你的目标路径 cp target/Backend_Automation-1.0-SNAPSHOT-jar-with-dependencies.jar /opt/jenkins/jars/
注意:确保Jenkins运行用户对目标路径有读写权限。
步骤2:创建新Jenkins任务运行Jar包
自由风格任务配置
- 新建自由风格项目,命名为
Run_Backend_Automation_Jar - 无需配置源码拉取(Jar已在本地)
- 添加执行Shell构建步骤(Windows环境选「执行Windows批处理命令」)
- 编写运行命令:
直接运行(前台)
# 验证Java版本(需与项目的Java 11匹配) java -version # 替换为你的Jar存储路径 java -jar /opt/jenkins/jars/Backend_Automation-1.0-SNAPSHOT-jar-with-dependencies.jar
后台运行(避免Jenkins任务阻塞)
如果需要Jar后台运行并记录日志,使用:
nohup java -jar /opt/jenkins/jars/Backend_Automation-1.0-SNAPSHOT-jar-with-dependencies.jar > /opt/jenkins/logs/app.log 2>&1 &
nohup:让进程脱离终端运行> /opt/jenkins/logs/app.log 2>&1:将标准输出和错误输出写入日志文件&:后台运行
排查Shell命令失败的常见原因
- 路径错误:检查Jar文件路径是否正确,路径分隔符是否符合系统要求(Linux用
/,Windows用\) - Java版本不匹配:项目编译用Java 11,运行时必须使用Java 11或兼容版本,用
java -version验证 - 权限不足:Jenkins用户没有Jar文件所在路径的读权限,或者日志目录的写权限
- Jar文件损坏:手动在服务器上运行Jar命令测试,确认Jar是否正常可执行
内容的提问来源于stack exchange,提问作者Harish Algat
相关产品推荐
相关产品推荐

