如何在Jenkins任务中运行Maven Java项目的main方法
问题解答
现有配置评估
当前配置完全不足以运行目标main方法,还存在逻辑冗余问题:
- 你先执行
mvn verify再执行mvn clean deploy,clean命令会直接清空verify阶段生成的所有构建产物,前一条命令完全无效 mvn verify和mvn deploy属于Maven标准生命周期命令,默认只会执行构建、测试、部署相关逻辑,不会主动触发你项目里的main方法运行- 测试目录不存在的提示,是因为Maven默认生命周期的
test阶段会自动扫描测试资源目录,你没有测试相关内容就会触发该提示
必要配置调整
第一步:跳过测试环节
所有Maven命令后加-Dmaven.test.skip=true参数,即可跳过所有测试相关步骤,不会再出现测试资源目录不存在的提示。
第二步:配置main方法执行逻辑,二选一即可
方案1:使用exec-maven-plugin直接运行
- 项目pom.xml中添加exec插件配置,替换为你自己的main类全限定名:
<build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>3.1.0</version> <configuration> <mainClass>com.yourpackage.YourMainClass</mainClass> </configuration> </plugin> </plugins> </build>
- 修改Jenkinsfile的Build阶段配置:
stage('Build') { steps { // 清理构建、跳过测试、执行main方法 sh 'mvn clean compile exec:java -Dmaven.test.skip=true' // 按需执行部署 sh 'mvn deploy -Dmaven.test.skip=true' } }
方案2:打包为可执行jar后运行
- 项目pom.xml中添加打包插件配置,替换为你自己的main类全限定名:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.6.0</version> <configuration> <archive> <manifest> <mainClass>com.yourpackage.YourMainClass</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
- 修改Jenkinsfile的Build阶段配置,替换为你实际生成的jar文件名:
stage('Build') { steps { // 清理构建、跳过测试、打包、部署 sh 'mvn clean package deploy -Dmaven.test.skip=true' // 运行打包好的可执行jar sh 'java -jar target/你的项目名-jar-with-dependencies.jar' } }
内容的提问来源于stack exchange,提问作者Orly Orly
相关产品推荐
相关产品推荐

