Java 没有主类的selenium testng maven项目的可执行jar

Java 没有主类的selenium testng maven项目的可执行jar,java,maven,selenium,Java,Maven,Selenium,我有一个用maven创建的Selenium TestNG项目`` 此项目没有主类 使用TestNg.xml文件,并在pom.xml文件中配置 从eclispe运行“maven测试”,测试基于testng.xml中定义的类成功运行。这里没有问题 使用项目文件夹中的mvn test从命令提示符尝试了相同的操作,并成功运行。这里也没有问题 我的要求:现在我想将这个项目打包到可执行jar中,或者是否有任何选项可以生成一个可执行文件,这样我就可以使用批处理文件安排运行 为此,我运行了“mvnpacka

我有一个用maven创建的Selenium TestNG项目``

  • 此项目没有主类
  • 使用TestNg.xml文件,并在pom.xml文件中配置
  • 从eclispe运行“maven测试”,测试基于testng.xml中定义的类成功运行。这里没有问题
  • 使用项目文件夹中的
    mvn test
    从命令提示符尝试了相同的操作,并成功运行。这里也没有问题
我的要求:现在我想将这个项目打包到可执行jar中,或者是否有任何选项可以生成一个可执行文件,这样我就可以使用批处理文件安排运行

为此,我运行了“mvnpackage”命令,它在目标文件夹中生成了jar文件。现在,当我尝试以
java-jar myproj-0.0.1-SNAPSHOT.jar运行它时,我得到的消息是“没有主清单属性,在myproj-0.0.1-SNAPSHOT.jar中”。这是预期的行为,因为在我的案例中没有主类。
因此,我创建了一个只包含一行打印“文本”的main类,并在pom.xml中的条目下面添加了mainClass

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
<version>2.3.2</version>
<configuration>
    <archive>
    <manifest>
        <mainClass>mainPackage.MainOne</mainClass>
    </manifest>
</archive>
</configuration>
 </plugin> 

org.apache.maven.plugins
maven jar插件
2.3.2
mainPackage.MainOne
然后我运行mvn包,它生成了新的jar。 然后转到我的项目的目标文件夹并以
java-jar myProj.jar mainPackage.MainOne
的形式运行命令,它运行并只打印“text”。我的TestNG测试没有运行。它只是运行主类:(。。
我应该怎么做?

我对JUnit做了类似的事情。我从main方法以编程方式运行测试。我不知道TestNG,但您可以在这里查看如何执行-

只是想让您知道,我已经找到了本文提供的解决方案

正如我提到的,我确实使用了main类,所以我做了下面的

-在pom.xml中添加了maven调用程序依赖项

<dependency>
    <groupId>org.apache.maven.shared</groupId>
    <artifactId>maven-invoker</artifactId>
  <version>2.1.1</version>
</dependency>
  • 然后从命令提示符运行命令
    mvn clean package shade:shade

  • 这在目标文件夹中创建了jar
  • 将jar复制到项目文件夹并运行命令
    java-jar myproj-0.0.1-SNAPSHOT.jar
    ,我的测试开始完美运行

  • 我已经按照您上面的所有说明进行了操作,但我一直得到:$java-jar myproj-0.0.1-SNAPSHOT.jar没有主清单属性,在myproj-0.0.1-SNAPSHOT.jar中
    public class MainOne {
        public static void main(String[] args) {
            InvocationRequest request = new DefaultInvocationRequest();
            request.setPomFile( new File( "pom.xml" ));
            request.setGoals( Collections.singletonList( "install" ));
            Invoker invoker = new DefaultInvoker();
            invoker.setMavenHome(new File(System.getenv("MAVEN_HOME")));
            try {
                invoker.execute( request );
            } catch (MavenInvocationException e) {
                e.printStackTrace();
            } 
        } 
    }