我对Maven完全不熟悉。我有一个使用TestNG注释的maven项目(selenium项目)。这意味着我在整个项目中没有主要方法。我想用mvn package
创建一个胖的JAR文件。我已经为mvn包找了一些文章,但找不到任何相关的东西。我们如何才能为没有主要方法的项目实现这一目标。
编辑
在检查更多文章时,我在主要方法下面添加了Class,如下所示
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为你建造胖罐,如下所示: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>