当前位置: 首页 > 知识库问答 >
问题:

用于没有主类的Selenium testng maven项目的可执行jar

朱通
2023-03-14

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

  • 此项目没有主类

我的要求:现在我想将这个项目打包到可执行的jar中,或者是否有任何选项来生成一个可执行文件,这样我就可以使用批处理文件来计划运行。

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

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

然后我运行mvn包,它生成了新的jar。然后转到我的项目的目标文件夹,以java-jar myProj的身份运行命令。jar主包。MainOne运行并只打印“文本”。我的TestNG测试没有运行。它只运行了主类:(……我应该做什么?

共有2个答案

宰父夕
2023-03-14

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

章光华
2023-03-14

只是想让您知道,我已经找到了一个解决方案,如本文所述,如何以编程方式调用Maven任务

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

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

<dependency>
    <groupId>org.apache.maven.shared</groupId>
    <artifactId>maven-invoker</artifactId>
  <version>2.1.1</version>
</dependency>

>

  • 使用此链接更新了我的主类类如下-http://maven.apache.org/shared/maven-invoker/usage.html

    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();
            } 
        } 
    }
    

    然后从命令提示符运行命令mvn clean package shade:shade

  •  类似资料:
    • Jenkins不熟悉,所以我有一个java web项目(maven)和一个单元测试文件。测试文件结构:src/test/Java/preprocessortest . Java 该测试在intellij中成功执行。但是Jenkins并不认为这个测试文件是成功的。 它显示“没有要运行的测试” Jenkins控制台日志 pom.xml (编辑)当我使用cmd作为“mvn test”在pc中进行mave

    • 我越来越沮丧了。我在互联网上找不到一个单一的,有凝聚力的答案来解决我的问题。虽然有很多文档,但没有什么能把所有这些都结合在一起(我可以找到)。 我只需要有人告诉我: null 尽可能简单。

    • 问题内容: 这个问题已经在这里有了答案 : Maven Run Project (6个答案) 5年前关闭。 我创建了一个使用Maven构建的简单控制台Java应用程序。有没有一种方法可以使用maven命令从命令行运行主类(不需要任何参数): 问题答案: 尝试使用maven-exec-plugin。从那里: 这将在JVM中运行您的类。您可以用来传递参数。 如果您使用的是Windows,请为和加上引号

    • 我试图在IntelliJ中运行cucumber特征文件。 Cucumber Options指向正确的文件夹,但在尝试执行JUnit运行程序类时,我会收到“无可用任务”通知。 我做错了什么? 这是我的:

    • 问题内容: 我不想将其打包在单个可执行jar中进行分发。我需要一个可执行文件,例如main.jar,所有依赖项都在libs / *。jar中 我如何才能使maven可执行jar不预先包含在其依赖库中? 在如何使用Maven创建具有依赖项的可执行JAR中?10年12月1日10:46回答了一条注释,安德烈·阿隆森(AndréAronsen),但那根本不起作用(未设置失败的sadescriptorRef

    • 问题内容: 我有一个多模块Maven项目,其中一个模块用于分发。 该发行版包含一个我想轻松执行的可执行jar。但是,要执行它,我必须键入类似以下内容: 简单键入以下内容将是更好的选择: 不幸的是,我找不到找到执行.jar的java目标的方法。exec目标实际上可以做到,但是有一个陷阱:jar包含一个嵌入式码头服务器,并且由于exec的工作方式(不使用与maven相同的JVM),除非我杀死进程,否则