【问题标题】:How to configure maven surefire to use an jvm agent that is a dependency?如何配置 maven Surefire 以使用作为依赖项的 jvm 代理?
【发布时间】:2012-10-27 05:09:37
【问题描述】:

我想配置 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 坐标引用作为项目依赖项的代理的路径?

【问题讨论】:

    标签: maven maven-3 maven-surefire-plugin


    【解决方案1】:

    您可以将所需的 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>
    

    【讨论】:

      【解决方案2】:

      使用

      依赖插件的属性mojo。

      <argLine>-javaagent:${org.springframework:spring-instrument:jar}</argLine>
      

      【讨论】:

        【解决方案3】:

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

         <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>
        

        【讨论】:

        • 要强调:没有maven-dependency-plugin,替换成变量是行不通的。
        • @kap 这应该如何工作,因为目标只为项目依赖项创建属性,而不是插件依赖项。现在我必须让 bytebuddy 成为我项目的依赖项?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-01-03
        • 1970-01-01
        • 1970-01-01
        • 2012-02-12
        • 2013-05-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多