我对 Maven 完全陌生。我有一个使用 TestNG 注释的 Maven 项目(selenium 项目)。这意味着我在整个项目中没有 main 方法。我想使用 mvn package
创建一个 fat JAR 文件。我浏览了几篇关于 mvn 包的文章,但找不到任何相关的东西。对于没有主要方法的项目,我们如何实现这一点。
EDIT
在检查更多文章时,我添加了下面的类,其主要方法如下
public class MainTest
{
public static void main(String[] args)
{
TestListenerAdapter tla = new TestListenerAdapter();
TestNG testng = new TestNG();
testng.setTestClasses(new Class[] { AnnotationTest.class });
testng.addListener(tla);
testng.run();
}
}
其中AnnotationTest是一个使用所有注释的类。
当我从命令行运行生成的 *one-jar.jar 文件时,我得到 ClassNotFoundException:AnnotationTest
。由于它是 Maven 项目,我的 test.class 文件位于 /target/test-classes 中。我如何使其在 main 方法中可用。
最佳答案
我试图解决同样的问题,所以万一其他人出现在这里,这就是我解决这个问题的方法:
我创建了一个主类,它运行 testng.xml 文件中的所有类,如下所示:
public class MainClass {
public static void main(String[] args){
// Get the path to testng.xml
String xmlPath = System.getProperty("user.dir") + "/testng.xml";
// Run all the tests in testng.xml
TestNG testng = new TestNG();
List<String> suites = Lists.newArrayList();
suites.add(xmlPath);
testng.setTestSuites(suites);
testng.run();
}
}
然后您可以使用 Maven 为您构建 fat jar,如下所述:How can I create an executable JAR with dependencies using Maven?
这仅在您已经有一个 testng.xml 文件时有帮助,而不是必须将其命名为该文件,您只需要 xml 中已定义的所有类或测试,如下所示:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Your Suite Name">
<test name="TestName">
<classes>
<class name="com.fullyQualified.ClassName"></class>
<class name="com.fullyQualified.ClassName2"></class>
<class name="com.fullyQualified.ClassName3"></class>
</classes>
</test>
</suite>
关于maven - 为 testNG 项目创建 Maven Fat jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32373709/