Maven测试和-Javaagent参数

时间:2017-09-19 14:07:11

标签: java maven javaagents

我有一个简单的java项目,其中包含具有当前体系结构的Junit测试用例:

pom.xml
src/main/java/com/Example.Java
src/test/java/com/ExampleTest.java

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</groupId>
     <artifactId>SampleExample</artifactId>
     <packaging>jar</packaging>
  <version>1.0</version>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>1.6</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
    </dependency>
  </dependencies>
</project>

要执行测试,我只需从bash调用 mvn test 。正如预期的那样将进行测试。现在问我的问题:

在maven之外指定 javagent 只需通过 -javaagen t选项的特异性来完成。我如何在maven框架内执行此操作,以便在执行mvn test时加载我指定的代理? (即如何在执行测试时添加maven将传递给'java'命令的自定义参数)

1 个答案:

答案 0 :(得分:1)

在POM中定义Surefire插件,并通过Surefire的配置传递JVM arg。

例如:

//div[@class='XYZ']/input[@checked]/following-sibling::input

对于后台:默认情况下<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.20.1</version> <configuration> <argLine>-javaagent:/path/to/javaagent</argLine> </configuration> </plugin> 目标绑定到test(有关默认绑定here的详细信息),因此您可能已经在运行Surefire插件,但可能没有意识到。现在唯一的变化是您需要更改Surefire插件的配置,这需要您按照上面显示的示例在POM中包含显式。如果不使用Surefire插件,则无法运行surefire:test目标,如果不配置Surefire插件,则无法告诉Surefire使用JVM arg。