300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > maven testNG打成jar包运行报错repackage failed: Unable to find main class

maven testNG打成jar包运行报错repackage failed: Unable to find main class

时间:2019-01-04 11:56:24

相关推荐

maven testNG打成jar包运行报错repackage failed: Unable to find main class

一.maven testNG如何打jar包

1.pom文件引入插件

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.7.1</version><configuration><suitXmlFiles><suitXmlFile><!--相对路径 -->./src/main/resources/testng.xml</suitXmlFile></suitXmlFiles></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><goals><goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中 --></goals></execution></executions></plugin></plugins></build>

2.切换到项目目录下,执行mvn clean package命令

darli@LAPTOP-LMMPH4VI MINGW64 ~/.ssh/workspace/muke/AutoTest/Chapter12/target (master)$ cd ..darli@LAPTOP-LMMPH4VI MINGW64 ~/.ssh/workspace/muke/AutoTest/Chapter12 (master)$ mvn clean package[INFO] Scanning for projects...[INFO][INFO] ---------------------< com.course.code:Chapter12 >----------------------[INFO] Building Chapter12 1.0-SNAPSHOT[INFO] --------------------------------[ jar ]---------------------------------Downloading from spring-milestone: https://repo.spring.io/milestone/org/apache/maven/plugins/maven-resources-plugin/2.4.3/maven-resources-plugin-2.4.3.pomDownloading from spring-snapshot: https://repo.spring.io/snapshot/org/apache/maven/plugins/maven-resources-plugin/2.4.3/maven-resources-plugin-2.4.3.pom............[INFO][INFO] --- maven-jar-plugin:3.0.2:jar (default-jar) @ Chapter12 ---[INFO] Building jar: C:\Users\darli\.ssh\workspace\muke\AutoTest\Chapter12\target\Chapter12-1.0-SNAPSHOT.jar[INFO][INFO] --- spring-boot-maven-plugin:2.0.0.RELEASE:repackage (default) @ Chapter12 ---[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 40.349 s[INFO] Finished at: -06-11T21:15:39+08:00[INFO] ------------------------------------------------------------------------

3.进入target目录,执行命令

darli@LAPTOP-LMMPH4VI MINGW64 ~/.ssh/workspace/muke/AutoTest/Chapter12/target (master)$ lltotal 48-rw-r--r-- 1 darli 197609 39401 6月 11 19:37 Chapter12-1.0-SNAPSHOT.jardrwxr-xr-x 1 darli 1976090 6月 11 19:56 classesdrwxr-xr-x 1 darli 1976090 6月 11 19:37 generated-sourcesdrwxr-xr-x 1 darli 1976090 6月 11 19:37 maven-archiverdrwxr-xr-x 1 darli 1976090 6月 11 19:37 maven-statusdrwxr-xr-x 1 darli 1976090 6月 11 19:37 surefiredrwxr-xr-x 1 darli 1976090 6月 11 19:37 surefire-reportsdarli@LAPTOP-LMMPH4VI MINGW64 ~/.ssh/workspace/muke/AutoTest/Chapter12/target (master)$ java -jar Chapter12-1.0-SNAPSHOT.jarChapter12-1.0-SNAPSHOT.jar中没有主清单属性

4.偶然发现再次运行又报错

[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.0.0.RELEASE:repackage (default) on project Chapter12: Execution default of goal org.springframework.boot:spring-boot-maven-plugin:2.0.0.RELEASE:repackage failed: Unable to find main class -> [Help 1][ERROR][ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.[ERROR] Re-run Maven using the -X switch to enable full debug logging.[ERROR][ERROR] For more information about the errors and possible solutions, please read the following articles:[ERROR] [Help 1] /confluence/display/MAVEN/PluginExecutionException

二.问题解决【方式1】

1.尝试在com.course下新建一个启动类

package com.course;import org.testng.TestNG;import org.testng.xml.XmlClass;import org.testng.xml.XmlSuite;import org.testng.xml.XmlTest;import java.util.ArrayList;import java.util.List;public class Main {public static void main(String[] args) {XmlSuite suite = new XmlSuite();suite.setName("用户管理系统测试套件");List<XmlClass> classes = new ArrayList<>();classes.add(new XmlClass("com.course.cases.LoginTest"));classes.add(new XmlClass("com.course.cases.AddUserTest"));classes.add(new XmlClass("com.course.cases.GetUserInfoTest"));classes.add(new XmlClass("com.course.cases.GetUserListTest"));classes.add(new XmlClass("com.course.cases.UpdateUserInfoTest"));XmlTest test = new XmlTest(suite);test.setName("用户管理系统测试");test.setXmlClasses(classes);List<XmlSuite> suites = new ArrayList<>();suites.add(suite);TestNG tng = new TestNG();tng.setXmlSuites(suites);tng.run();}}

再次执行打包命令mvn clean package

[INFO][INFO] --- maven-jar-plugin:3.0.2:jar (default-jar) @ Chapter12 ---[INFO] Building jar: C:\Users\darli\.ssh\workspace\muke\AutoTest\Chapter12\target\Chapter12-1.0-SNAPSHOT.jar[INFO][INFO] --- spring-boot-maven-plugin:2.0.0.RELEASE:repackage (default) @ Chapter12 ---[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 5.931 s[INFO] Finished at: -06-11T21:50:34+08:00[INFO] ------------------------------------------------------------------------

再次执行测试命令

......22:04:45.421 [main] DEBUG org.apache.ibatis.transaction.jdbc.JdbcTransaction - Opening JDBC Connection22:04:45.424 [main] DEBUG org.apache.ibatis.datasource.pooled.PooledDataSource - Created connection 1908923184.22:04:45.425 [main] DEBUG org.apache.ibatis.transaction.jdbc.JdbcTransaction - Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@71c7db30]22:04:45.425 [main] DEBUG com.course.model.getUpdateUserInfo - ==> Preparing: select * from user where id=? andusername=? and age=?22:04:45.425 [main] DEBUG com.course.model.getUpdateUserInfo - ==> Parameters: 12(Integer), 小兰9(String), 19(String)22:04:45.425 [main] DEBUG com.course.model.getUpdateUserInfo - <==Total: 1db is:User(id=12, userName=小兰9, password=111, age=19, sex=1, permission=14, isDelete=0)22:04:45.427 [main] INFO com.course.cases.UpdateUserInfoTest - ********updateUserInfo api 验证通过*********===============================================用户管理系统测试套件Total tests run: 7, Failures: 0, Skips: 0===============================================-------------》main函数代码执行darli@LAPTOP-LMMPH4VI MINGW64 ~/.ssh/workspace/muke/AutoTest/Chapter12/target (master)

测试代码成功启动且测试用例执行通过;

这里默认执行了Main类的main方法(这个方法的作用和testng.xml作用一样的,都是运行测试用例代码)

三.问题解决【方式2】

1.修改pom文件如下:

<!-- 打包插件--><build><plugins><!--maven-surefire-plugin执行test测试包--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.7.1</version><configuration><!--跳过测试代码执行--><!--<skipTests>true</skipTests>--><!--忽略测试代码执行失败--><testFailureIgnore>true</testFailureIgnore><suiteXmlFiles><suiteXmlFile>./src/main/resources/testng.xml</suiteXmlFile></suiteXmlFiles></configuration></plugin><!-- maven 打依赖jar包 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins></build>

2.再次执行mvn clean package

........-------------------------------------------------------T E S T S-------------------------------------------------------Running TestSuite[TestNGContentHandler] [WARN] It is strongly recommended to add "<!DOCTYPE suite SYSTEM "/testng-1.0.dtd" >" at the top of your file, otherwise TestNG may fail or not work as expected.10:11:08.314 [main] DEBUG org.apache.ibatis.logging.LogFactory - Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter.....10:11:09.325 [main] DEBUG com.course.model.getUpdateUserInfo - ==> Preparing: select * from user where id=? and is_delete=?10:11:09.325 [main] DEBUG com.course.model.getUpdateUserInfo - ==> Parameters: 13(Integer), 1(String)10:11:09.325 [main] DEBUG com.course.model.getUpdateUserInfo - <==Total: 1db is:User(id=13, userName=tom, password=1221, age=26, sex=0, permission=1, isDelete=1)10:11:09.325 [main] INFO com.course.cases.UpdateUserInfoTest - ********deleteUserInfo api 验证通过*********Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.112 secResults :Tests run: 7, Failures: 0, Errors: 0, Skipped: 0[INFO][INFO] --- maven-jar-plugin:3.0.2:jar (default-jar) @ Chapter12 ---[INFO] Building jar: C:\Users\darli\.ssh\workspace\muke\AutoTest\Chapter12\target\Chapter12-1.0-SNAPSHOT.jar[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 11.236 s[INFO] Finished at: -06-13T10:11:10+08:00[INFO] ------------------------------------------------------------------------

如图所示在打包过程中执行完所有的testng.xml里面的测试代码

如果是需要用jenkins来部署的话更推荐第二种方式

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。