我需要在离线服务器上执行JMeter测试。
目前,我有一个Maven项目,它使用插件执行JMeter测试" jmeter-maven-plugin"在我的工作站上。
现在我想打包这个Maven项目,将其部署在我的离线服务器上。我希望能够使用" maven验证"命令在已部署的项目上启动我的JMeter测试。
我尝试使用" maven-dependency-plugin"打包(压缩)我的项目。和" maven-assembly-plugin"插件。
我想在zip文件中使用所有Maven依赖项,以便在我的离线服务器上执行我的Maven项目(尤其是jmeter maven插件)。
它有效,我的依赖是在我的拉链。但是当我在服务器上执行以下命令时:
mvn -o -Dmaven.repo.local=testj-meter-0.0.1-SNAPSHOT/libs/ verify
我有以下错误:
[INFO]扫描项目... [INFO] [INFO] -------------------------------------------------- ---------------------- [INFO]构建测试性能jmeter 0.0.1-SNAPSHOT [INFO] -------------------------------------------------- ---------------------- [警告] POM for org.apache.maven.plugins:maven-resources-plugin:jar:2.6缺少,没有 可用的依赖信息[INFO] -------------------------------------------------- ---------------------- [INFO] BUILD FAILURE [INFO] -------------------------------------------------- ---------------------- [INFO]总时间:0.130秒[INFO]完成时间: 2018-02-27T14:54:34 + 01:00 [信息]最终记忆:8M / 106M [INFO] -------------------------------------------------- ---------------------- [ERROR]插件org.apache.maven.plugins:maven-resources-plugin:2.6或 其中一个依赖项无法解决:无法访问中心 (https://repo.maven.apache.org/maven2)处于离线模式和 artifact org.apache.maven.plugins:maven-resources-plugin:jar:2.6有 之前没有从中下载过。 - > [帮助1] [错误] [错误]要查看 错误的完整堆栈跟踪,使用-e开关重新运行Maven。 [ERROR]使用-X开关重新运行Maven以启用完整的调试日志记录。 [ERROR] [ERROR]有关错误和可能的更多信息 解决方案,请阅读以下文章:[错误] [帮助1] http://cwiki.apache.org/confluence/display/MAVEN/PluginResolutionException
我的pom.xml和assemble.xml如下:
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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>test</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>jmeter tests</name>
<description>jmeter tests</description>
<properties>
<plugin.jmeter.version>2.6.0</plugin.jmeter.version>
<plugin.maven.dependency.version>2.10</plugin.maven.dependency.version>
</properties>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>com.lazerycode.jmeter</groupId>
<artifactId>jmeter-maven-plugin</artifactId>
<version>${plugin.jmeter.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>${plugin.maven.dependency.version}</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>com.lazerycode.jmeter</groupId>
<artifactId>jmeter-maven-plugin</artifactId>
<executions>
<execution>
<id>jmeter-tests</id>
<goals>
<goal>jmeter</goal>
</goals>
</execution>
<execution>
<id>jmeter-check-results</id>
<goals>
<goal>results</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>${plugin.maven.dependency.version}</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/libs</outputDirectory>
<useRepositoryLayout>true</useRepositoryLayout>
<copyPom>true</copyPom>
<addParentPoms>true</addParentPoms>
<excludeTransitive>false</excludeTransitive>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.3</version>
<configuration>
<descriptor>src/assembly/assemble.xml</descriptor>
</configuration>
<executions>
<execution>
<id>create-archive</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.lazerycode.jmeter</groupId>
<artifactId>jmeter-maven-plugin</artifactId>
<version>${plugin.jmeter.version}</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>${plugin.maven.dependency.version}</version>
<type>jar</type>
<exclusions>
<exclusion>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</project>
Assemble.xml:
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>src</id>
<formats>
<format>zip</format>
</formats>
<fileSets>
<fileSet>
<directory>${project.basedir}</directory>
<includes>
<include>pom.xml</include>
</includes>
<useDefaultExcludes>true</useDefaultExcludes>
</fileSet>
<fileSet>
<directory>${project.basedir}/src/test/jmeter</directory>
<useDefaultExcludes>true</useDefaultExcludes>
</fileSet>
<fileSet>
<directory>${project.basedir}/target/libs</directory>
<outputDirectory>libs</outputDirectory>
</fileSet>
</fileSets>
</assembly>
有谁知道它来自哪里?我想这是因为依赖关系不像他们在我的本地存储库中...虽然我提到了&#34; copyPom&#34; maven依赖项插件中的参数。
非常感谢, Hejk
答案 0 :(得分:0)
不容易:
首先,您需要在本地获取所有项目依赖项。可以通过多种方式完成,例如设置your local maven repo或managing artifacts within a project。在这两种情况下,您还需要更改settings.xml以确保工件解析默认为您的本地仓库。
您还需要确保从本地存储库加载插件。因此,您需要将所有Maven标准构建插件(包括jmeter-maven-plugin)放入您的本地仓库sort of like this,但您必须弄清楚需要安装的整个插件列表。
毕竟它应该可以工作,只要你维护你的本地回购。
虽然我认为在这种情况下你没有从使用jmeter-maven-plugin或Maven中获得任何好处(Maven的主要目的是帮助你避免管理依赖关系,你必须要做的事情)。
相反,我认为
会更好答案 1 :(得分:0)
在离线服务器上编辑maven的settings.xml并添加如下镜像:
<mirror>
<id>local</id>
<mirrorOf>*</mirrorOf>
<url>file:///tmp/local-repo</url>
</mirror>
现在任何可以在具有Internet访问权限的服务器上运行的mvn命令都可以在脱机服务器上运行而不会出错。