maven执行命令打包

2019-01-19  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读