美文网首页
maven执行命令打包

maven执行命令打包

作者: 零下的雨 | 来源:发表于2019-01-19 00:10 被阅读0次

    maven命令执行testgn.xml

    想通过maven命令运行测试项目,需要先在pom.xml中添加插件:

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.19</version>
                    <configuration>
                        <forkMode>once</forkMode>
                        <argLine>-Dfile.encoding=UTF-8</argLine><!-- 解决读取测试数据时的中文乱码问题 -->
                        <suiteXmlFiles>
                            ${project.basedir}/src/main/resources/testng.xml
                        </suiteXmlFiles>
                    </configuration>
                </plugin>
    

    ${project.basedir}/src/main/resources/testng.xml
    是testng.xml文件的路径。

    然后还需要在pom.xml的project下配置,这样能识别中文:

        <properties>
            <project.build.sourceEncoding>
                UTF-8
            </project.build.sourceEncoding>
        </properties>
    

    打开cmd,进到项目根目录:
    mvn test 执行项目打包和测试
    D:\Springboot\MyApplicationthree>mvn test
    执行2条用例都执行成功了


    image.png

    maven命令执行java测试类

    在test/java目录下有一个测试类,需要通过maven命令执行java测试类,测试类必须放到test/java目录下:


    image.png

    在pom文件中需要把上面讲到的插件先注释掉,同时加入以下插件,include中写入测试类名称:

     <!--<plugin>-->
                    <!--<groupId>org.apache.maven.plugins</groupId>-->
                    <!--<artifactId>maven-surefire-plugin</artifactId>-->
                    <!--<version>2.19</version>-->
                    <!--<configuration>-->
                        <!--<forkMode>once</forkMode>-->
                        <!--<argLine>-Dfile.encoding=UTF-8</argLine>&lt;!&ndash; 解决读取测试数据时的中文乱码问题 &ndash;&gt;-->
                        <!--<suiteXmlFiles>-->
                            <!--${project.basedir}/src/main/resources/testng.xml-->
                        <!--</suiteXmlFiles>-->
                    <!--</configuration>-->
                <!--</plugin>-->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.19</version>
                    <configuration>
                        <forkMode>once</forkMode>
                        <argLine>-Dfile.encoding=UTF-8</argLine><!-- 解决读取测试数据时的中文乱码问题 -->
                        <!--只能运行在test目录下的类-->
                        <includes>
                            <include>
                                getdatabase.java
                            </include>
                        </includes>
                    </configuration>
                </plugin>
    
    image.png

    在cmd中进入项目根目录,输入mvn test 执行测试


    image.png

    maven命令执行多线程并行执行

    appium是在同一个设备上运行,好像不太可行,后面会再讲解
    并行测试时,测试用例之间不能太耦合,就是每个测试用例都可以单独出来去执行,互相没有关联,这样才能不放到一个线程中分开并行执行。
    pom文件中增加插件信息

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.19</version>
                    <configuration>
                        <forkMode>once</forkMode>
                        <argLine>-Dfile.encoding=UTF-8</argLine><!-- 解决读取测试数据时的中文乱码问题 -->
                        <excludes><!--排除这个类,不测试这个类-->
                            <exclude>
                                getdatabase.java
                            </exclude>
                        </excludes>
                        <parallel>methods</parallel>
                        <threadCount>3</threadCount>
                        <suiteXmlFiles>
                            <suiteXmlFile>
                                ${project.basedir}/src/main/resources/testng.xml
                            </suiteXmlFile>
                        </suiteXmlFiles>
    
                    </configuration>
                </plugin>
    
    image.png

    maven远程调用

    mvn -Dmaven.surefire.debug test
    需要在idea中先设置远程调试IP和端口号,再设置断点然后调试。

    为什么会有远程调试,如果把脚本放到git仓库上,另一台电脑从git仓库下载代码,通过mvn test运行测试,在本地执行程序没有问题,在另一台电脑上通过mvn执行可能会有问题,因为maven的编译器和idea、eclipse的编译器不一样,会有差别。如果出现了问题,通过在本地idea中设置远程调试另一台电脑上的代码查看mvn运行时问题出现在哪个环节。

    在idea中设置远程调试步骤:
    参考:https://blog.csdn.net/u014513883/article/details/53583495

    maven私服

    有些公司会自己去建私服,就是maven依赖的jar包仓库,在nexus网站上创建私服,会有一个id,name,产生一个url地址,上传公司内部需要的jar包,本地在pom文件中可以引用仓库地址


    image.png

    maven项目中引入jar包流程

    创建一个项目A,然后打包成jar包,被另一个项目B引入。
    目前能够被其他项目引入的jar包,以我目前的知识了解的只有两种,带有main方法的项目、springboot的项目,springboot项目中是需要用Application启动项目的所以它的mainclass就是application启动项所在的路径。
    先说springboot的项目,在pom文件中要先添加插件,插件代码如下:

        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
    
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <mainClass>com.course.Application</mainClass>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
    </plugins>
    <build>
    

    <mainClass>com.course.Application</mainClass>
    是在application启动项在src/java/com.course目录下。

    如果是普通的项目,需要有main方法,如下项目:
    先写一个方法:


    image.png

    再写一个main方法:


    image.png
    在该项目的pom文件中添加插件:
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <configuration>
                        <archive>
                            <manifest>
                                <mainClass>com.yixin.TestmainTestng</mainClass>
                            </manifest>
                        </archive>
                        <descriptorRefs>
                            <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs>
                    </configuration>
                    <!--下面是为了使用 mvn package命令,如果不加则使用mvn assembly-->
                    <executions>
                        <execution>
                            <id>make-assemble</id>
                            <phase>package</phase>
                            <goals>
                                <goal>single</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    

    注意:<artifactId>maven-compiler-plugin</artifactId>和springboot项目的打包插件中是一样的,不一样的是<artifactId>maven-assembly-plugin</artifactId>,
    <mainClass>com.yixin.TestmainTestng</mainClass> 是main方法的路径。

    补充:如果是testng的项目,只需要在插件中输入:

     <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.7.1</version>
                    <configuration>
                        <suiteXmlFiles>
                            <suiteXmlFile>
                                ./src/main/resources/TestJenkins.xml
                            </suiteXmlFile>
                        </suiteXmlFiles>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    

    maven打包时会自动去找Testng.xml运行打包,也就是下面这句代码中定义的xml:
    <suiteXmlFile>
    ./src/main/resources/TestJenkins.xml
    </suiteXmlFile>
    当然也可以利用上面讲到的maven执行java类的方法运行打包。

    配置完pom文件后,就可以打包了,按如下图中操作可以很简单的打包:


    image.png
    image.png

    打开cmd,进入项目jar所在目录,用java -jar jar包名称,执行jar能正常输出结果代表jar包构建成功


    image.png

    进入项目B中,引入项目A的jar包:


    image.png
    image.png
    image.png

    在项目B中可以import 项目A中的类,同时可以用到该类中的方法:


    image.png

    相关文章

      网友评论

          本文标题:maven执行命令打包

          本文链接:https://www.haomeiwen.com/subject/rkvgdqtx.html