如何使用Maven将根据代码构建的JMeter测试计划打包到jar中?

时间:2019-04-07 14:43:27

标签: maven jmeter

我正在尝试用Java构建JMeter测试计划。我似乎找不到太多有关此过程的文档,并且可以找到的所有资源都使用Maven来构建jar。我没有使用Maven的经验,因此无法正确配置pom。

主要混淆点:

  • 如果我的jar放在jmeter_home / lib / ext中,是否会使像ApacheJMeter_core和ApacheJMeter_http这样的依赖关系成为可能?

  • 似乎有多个目的相似的Maven插件(maven-jar,maven-assembly)?有最适合我需要的一个吗?

  • 如果我想在jar之外的地方(JMeter目录中的其他地方)引用非Java资源,那么在配置POM时是否需要特别考虑?

  • 我应该将jar配置为可执行文件,还是JMeter提供像脚本一样使用lib / ext jars?

任何对这些观点的见解将不胜感激。

这些资源指导了我,但是我却浪费了很多时间来尝试解决这一看似卑鄙的过程。

https://bitbucket.org/blazemeter/jmeter-from-code/

https://github.com/piotrbo/jmeterpoc

如果任何人有更多的资源来通过代码构建JMeter测试计划,请随时分享!

这是我的pom.xml,据我了解,我在使用插件等方面可能存在一些冗余,但是这种情况发生在您攻击同一个问题数小时而没有任何进展时:)

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.sweber</groupId>
    <artifactId>jmeter-plugin</artifactId>
    <packaging>jar</packaging>
    <version>1.0</version>
    <name>jmeter-plugin</name>
    <url>http://maven.apache.org</url>
    <build>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>
                                ${project.build.directory}/lib
                            </outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <mainClass>
                                com.sweber.Main
                            </mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <archive>
                                <manifest>
                                    <mainClass>
                                        com.sweber.Main
                                    </mainClass>
                                </manifest>
                            </archive>
                            <descriptorRefs>
                                <descriptorRef>jar-with-dependencies</descriptorRef>
                            </descriptorRefs>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

        </plugins>

    </build>

    <dependencies>

        <dependency>
            <groupId>org.apache.jmeter</groupId>
            <artifactId>ApacheJMeter_core</artifactId>
            <version>5.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.jmeter</groupId>
            <artifactId>ApacheJMeter_java</artifactId>
            <version>5.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.jmeter</groupId>
            <artifactId>ApacheJMeter_http</artifactId>
            <version>5.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.0.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.0.1</version>
        </dependency>

        <dependency>
            <groupId>kg.apc</groupId>
            <artifactId>jmeter-plugins-casutg</artifactId>
            <version>2.7</version>
        </dependency>

    </dependencies>

</project>

1 个答案:

答案 0 :(得分:0)

您需要在POM中添加com.lazerycode.jmeter。

https://github.com/jmeter-maven-plugin/jmeter-maven-plugin

因此您将其添加到pom中:

 private void popUpMethod(Context context){

        if(isMembersOnly.equalsIgnoreCase("Members Only")){
            for(int i = 0; i < MBEventsMemberOnly.size() ; i++){
                popup.getMenu().add(1, i, 1, MBEventsMemberOnly.get(i).getName());
            }
        }else {
            for(int i = 0; i < MBEventTypes.size() ; i++){
                popup.getMenu().add(1, i, 1, MBEventTypes.get(i).getName());
            }
        }


        //Inflating the Popup using xml file
        popup.getMenuInflater().inflate(R.menu.members_list, popup.getMenu());

        //registering popup with OnMenuItemClickListener
        popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            public boolean onMenuItemClick(MenuItem item) {
                //return true;
                switch (item.getItemId()) {
                    case 0:
                        //handle menu1 click
                        break;
                    case 1:
                       //handle menu2 click
                            break;
                        }
                    case 2:
                        //handle menu3 click
                        break;
                }
                return false;
            }
        });

        popup.show();//showing popup menu
    }

此外,如果要在IDE测试中进行操作,而不仅仅是mvn clean验证,则必须将Jmeter依赖项解压缩到目标目录中。

在项目根目录中使用它:mvn com.lazerycode.jmeter:jmeter-maven-plugin:2.9.0:jmeter

任何其他mvn插件的等效语句:mvn groupId:artifactId:version:goal(基于插件的POM结构)