I want to run a jmeter script using IntelliJ and Maven. Basicaly my goal is to run a jmeter script thru Jenkins.
I did following steps:
Downloaded Jmeter source code and extracted all files under
C:\Jmeter\apache-jmeter-3.3
Created a script by launching jmeter using jmeter.bat
Saved the script under C:\Jmeter\apache-jmeter-3.3\bin\templates\create-client.jmx
Created a new Maven Project in IntelliJ under new folder C:\Jmeter-test
Copied report-template, reportgenerator.properties under src/test/resources
Copied create-client.jmx under src/test/jmeter/create-client.jmx
Modifiled pom.xml to include Jmeter plugin
<plugins>
<plugin>
<groupId>com.lazerycode.jmeter</groupId>
<artifactId>jmeter-maven-plugin</artifactId>
<version>1.6.1</version>
<executions>
<execution>
<id>jmeter-tests</id>
<goals>
<goal>jmeter</goal>
</goals>
</execution>
</executions>
<configuration>
<testFilesIncluded>
<jMeterTestFile>create-client.jmx</jMeterTestFile>
</testFilesIncluded>
</configuration>
</plugin>
When i run mvn verify command, it sayd 'No Tests to Run'. I am not very familiar with IntelliJ and Maven. Not sure if i need to import existing Jmeter souce code.Any help would be appreaciated. Thanks!
As per this documentation :
https://github.com/jmeter-maven-plugin/jmeter-maven-plugin/wiki/Selecting-Tests-To-Run#2
Use version 2.7.0 and it should be ok:
<plugin>
<groupId>com.lazerycode.jmeter</groupId>
<artifactId>jmeter-maven-plugin</artifactId>
<version>2.7.0</version>
<executions>
<execution>
<id>jmeter-tests</id>
<goals>
<goal>jmeter</goal>
</goals>
</execution>
</executions>
<configuration>
<testFilesIncluded>
<jMeterTestFile>create-client.jmx</jMeterTestFile>
</testFilesIncluded>
</configuration>
</plugin>
Related
I have a Maven web project for which I'm trying to run a couple of simple Spock web UI tests under Eclipse with Selenium and Chromedriver. I can run each test class individually by clicking on it and selecting "Run As>Junit Test" if I add the following to the file's run configuration VM arguments:
-Dwebdriver.chrome.driver=/Users/mht/ChromeDriver/2.3.1/chromedriver
Obviously, this is the location of the Chromedriver on my system. Then I tried to set up a Maven build goal at the project level to run the tests. I click on the project name and select "Run Configurations>Maven Build" and create a "Verify" configuration to match the verify goal defined in my pom. In the "Goals, box I enter "verify" and on the JRE tab I also enter the above location for the chromedriver in the VM arguments box. When I run this goal, or on the command line type "mvn verify", I get the following error:
geb.driver.DriverCreationException: failed to create driver from callback 'script15040527017471153797989$_run_closure1#1046d517'
at com.google.common.base.Preconditions.checkState(Preconditions.java:754)
...
This tells me the test can not locate the chromedriver. If I copy the chromedriver into the base directory of the project, the then the test will run using the verify goal or by typing "mvn verify" on the command line. Why isn't setting the chromedriver location not working at the maven goal level?
I don't think this really matters, but the build section of my pom is
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<webXml>src/main/webapp/WEB-INF/web.xml</webXml>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.18</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<useFile>false</useFile>
<includes>
<include>**/*Spec.java</include>
</includes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<id>tomcat-run</id>
<goals>
<goal>run-war-only</goal>
</goals>
<phase>pre-integration-test</phase>
<configuration>
<port>9081</port>
<fork>true</fork>
</configuration>
</execution>
<execution>
<id>tomcat-shutdown</id>
<goals>
<goal>shutdown</goal>
</goals>
<phase>post-integration-test</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.gmavenplus</groupId>
<artifactId>gmavenplus-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
The maven arguments are not passed to the surefire and failsafe configurations per default. Both fork new JVMs which doesn't get these arguments. See the docs Surefire and Failsafe regarding argLine.
So mvn verify -DargLine="-Dwebdriver.chrome.driver=/Users/mht/ChromeDriver/2.3.1/chromedriver" should work for you.
However, the better way is to use the WebDriver Extensions Maven Plugin which can be used to automatically download the appropriate driver. You can then do some simple scripting to locate the driver via your geb config, or hard code the known relative location.
BTW the gmaven-plus plugin is outdated.
I have managed to generate javadocs for my maven java project.
I use the following in
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<additionalparam>-Xdoclint:none</additionalparam>
</configuration>
</execution>
</executions>
</plugin>
I use the goal javadoc:javadoc when building.
Is there a way I can start my tomcat server and view the generated javadocs via a URL on my tomcat server? Something like localhost:8080/...
Thanks
I have a windows batch file to create me a file myUser.aaa.
And I call this bat file using exec-maven-plugin
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<phase>pre-integration-test</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>scripts/MyBat.bat</executable>
</configuration>
</plugin>
</plugins>
What I want to know is how can I install the file to my repo after the MyBat.bat was executed?
I first wanted to use an mvn command from the bat file to upload it but this job gets executed from a Jenkins server and it has its own maven config. If I run mvn from the bat file it will refer to the maven on the local system.
I would suggest to use the build-helper-maven-plugin to add the supplemental artifact to your build and afterwards it will be deployed in one go with the rest which can be done like this:
<project>
...
<build>
<plugins>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.9.1</version>
<executions>
<execution>
<id>attach-artifacts</id>
<phase>package</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>some file</file>
<type>extension of your file </type>
<classifier>optional</classifier>
</artifact>
...
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
May be you should bind the exec-maven-plugin to an earlier phase or the build-helper-maven-plugin to a later phase. I would suggest to use prepare-package for the exec-maven-plugin. Furthermore i would suggest to use uptodate versions of the plugins.
Is there any phase I can use to prevent Maven from running a plugin goal or any other way I can tell Maven to skip a plugin goal?
Basically, I want to just run it manually.
<groupId>com.googlecode.maven-download-plugin</groupId>
<artifactId>download-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<phase >pre-integration-test</phase>
<goals>
<goal>wget</goal>
</goals>
</execution>
</executions>
<configuration>
<outputDirectory>${project.build.directory}/output</outputDirectory>
<url>http://some.url</url>
<outputFileName>filename</outputFileName>
</configuration>
</plugin>
When I use pre-integration-test it runs during mvn install. However, I just want to run it manually.
Phase none worked for my scenario to keep test-jars from being created for specific modules in my multi-module maven project. Like this:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>test-jar</id>
<phase>none</phase>
</execution>
</executions>
</plugin>
i need to hook or attach a batch file to maven
so if lets say i type
mvn package
and the there were no errors then a batch file i created would start running.
is there a way of doing something like that ?
You can easily do that with the maven-exec-plugin and linking it with the package phase:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<id>runbatchfile</id>
<phase>package</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>c:\path\to\file.bat</executable>
</configuration>
</plugin>
</plugins>
With this configuration : your batch file will be execute just after the default goal associated with the package phase.