12

我想配置 maven sure fire 插件以使用 java 代理的参数启动单元测试 jvm。代理 jar 文件是从 maven Central 获取的,所以我希望 maven 自动找出代理 jar 文件的路径。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.12.4</version>
    <configuration>
        <argLine>-javaagent: How to reference an agent jar that is a depedency </argLine>
    </configuration>
</plugin>

如何使用 maven 坐标引用作为项目依赖项的代理的路径?

4

3 回答 3

9

您可以将所需的 jar 之一复制到目标位置。然后在命令行上引用该 jar。

这是一个示例(使用 log4j,它不是一个有效的代理 jar,只是为了展示一个示例):

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.5.1</version>
    <executions>
        <execution>
            <id>copy-agent</id>
            <phase>process-test-classes</phase>
            <goals>
                <goal>copy</goal>
            </goals>
            <configuration>
                <artifactItems>
                    <artifactItem>
                        <groupId>log4j</groupId>
                        <artifactId>log4j</artifactId>
                        <version>1.2.14</version>
                        <outputDirectory>${project.build.directory}/agents</outputDirectory>
                        <destFileName>my-special-agent.jar</destFileName>
                    </artifactItem>
                </artifactItems>
            </configuration>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.12.4</version>
    <configuration>
        <argLine>-javaagent:${project.build.directory}/agents/my-special-agent.jar</argLine>
    </configuration>
</plugin>
于 2012-11-07T07:50:12.290 回答
5

采用

依赖插件的属性 mojo。

<argLine>-javaagent:${org.springframework:spring-instrument:jar}</argLine>
于 2016-06-28T01:52:21.127 回答
3

@wozza-xing 为复制 jar 提供了一个非常出色的解决方案。完整的 XML 片段:

 <plugin>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
      <execution>
        <goals>
          <goal>properties</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
      <argLine>-javaagent:${net.bytebuddy:byte-buddy-agent:jar}</argLine>
    </configuration>
  </plugin>
于 2018-06-05T16:12:07.030 回答