我曾尝试按照SO上此响应的配置,将本地repo中的jar位置用作插件参数,但似乎不起作用。我不知道这是否是因为比响应更新的Maven版本(我使用的是Maven 3.2.5)
在pom.xml中,我需要在我的surefire插件定义中添加一个javaagent。javaagent jar文件是我项目中的一个依赖项。
我尝试过以下几种:
<dependencies>
<dependency>
<groupId>org.jmockit</groupId>
<artifactId>jmockit</artifactId>
<version>${jmockit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
...
<!-- Configuration to use jmockit on IBM J9 -->
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>-javaagent:${org.jmockit:jmockit:jar}</argLine>
</configuration>
</plugin>
我原以为${org.jmockit:jmockit:jar}
会扩展到jar的位置,但在我的mvn控制台中,我看到了以下错误:
[ERROR] Command wascmd.exe /X /C "C:IBMSDPjdkjrebinjava -javaagent:${org.jmockit:jmockit:jar} -jar C:devEclipsertc-connectortargetsurefiresurefirebooter1389906134960134.jar C:devEclipsertc-connectortargetsurefiresurefire5488684370604495471tmp C:devEclipsertc-connectortargetsurefiresurefire_05402037720997438783tmp"
很明显,这个参数并没有得到扩展。我希望/期待看到类似-javaagent:c:userseric.m2repositoryorg.jmockit1.20jmockit-1.20.jar
或类似的东西。
有没有一种干净的方法可以在插件配置中从依赖项引用jar?我知道我可以使用依赖插件将jar复制到目标文件夹中的一个已知位置,然后指向该位置,但我希望有一个更简单的解决方案,不需要中间步骤。
要进行变量扩展,需要添加maven依赖插件:
<!-- obtain ${*:*:jar} properties -->
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>getClasspathFilenames</id>
<goals>
<goal>properties</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>-javaagent:${org.jmockit:jmockit:jar}</argLine>
</configuration>
</plugin>
您需要设置;argLine"标签值如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.version}</version>
<configuration>
<argLine>
-javaagent:"${localRepository}/org/jmockit/jmockit/${jmockit.version}/jmockit-${jmockit.version}.jar"
</argLine>
</configuration>
</plugin>
您需要设置jmockit jar所在的.m2 repo路径。它对我有效。
maven依赖插件包含一个目标build-classpath
,它将解决这个问题。
在命令行上,你可以这样做:
mvn dependency:build-classpath -DincludeArtifactIds=testng -DincludeGroupIds=testng
结果是:
C:repositoryorgtestngtestng6.8.21testng-6.8.21.jar
生成的类路径也可以放入属性outputProperty
…中。。。。这也可以配置到pom中。。。