为testNG项目创建maven fat jar

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为testNG项目创建maven fat jar相关的知识,希望对你有一定的参考价值。

我对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>

以上是关于为testNG项目创建maven fat jar的主要内容,如果未能解决你的问题,请参考以下文章

尝试执行 fat jar 时出现“无主清单属性”

从 kotlin 多平台项目创建 fat jar

maven 打 fat包(jar包有了全部依赖)插件

更改 gradle 中的 fat jar 名称

[转] maven打包可运行的fat-jar的简单方法

如何使用 IntelliJ 制作具有所有依赖项的 jar 文件,也就是 Fat jar