如何将Maven依赖项的JAR位置指定为插件参数?

时间:2015-10-28 17:39:54

标签: java maven maven-surefire-plugin

我尝试按照this response on SO中的配置使用我本地仓库中的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:\IBM\SDP\jdk\jre\bin\java -javaagent:${org.jmockit:jmockit:jar} -jar C:\dev\Eclipse\rtc-connector\target\surefire\surefirebooter1389906134960134.jar C:\dev\Eclipse\rtc-connector\target\surefire\surefire5488684370604495471tmp C:\dev\Eclipse\rtc-connector\target\surefire\surefire_05402037720997438783tmp"

很明显,参数没有得到扩展。我希望/希望看到像-javaagent:c:\users\eric\.m2\repository\org.jmockit\1.20\jmockit-1.20.jar或类似的东西。

我是否可以通过插件配置从我的依赖项中引用jar?我知道我可以使用dependency-plugin将jar复制到目标文件夹中的已知位置然后指向它,但我希望有一个更简单的解决方案,不需要中间步骤。

3 个答案:

答案 0 :(得分:2)

要变量扩展,需要添加 maven-dependency-plugin

<!DOCTYPE html>
<html>
<body>
<div id='buttons'>
  <button class='add_div'>Add Div</button>
  <button class='update_text'>Update text of last created div</button>
</div>
<div class='div_container'></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</body>
</html>

答案 1 :(得分:0)

maven-dependency-plugin包含可解决此问题的目标build-classpath

在命令行上,您可以执行以下操作:

mvn dependency:build-classpath -DincludeArtifactIds=testng -DincludeGroupIds=testng

导致:

C:\repository\org\testng\testng\6.8.21\testng-6.8.21.jar

生成的类路径也可以放入属性outputProperty .... 这也可以配置成pom ......

答案 2 :(得分:0)

您需要按如下所示设置“ 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回购路径。它对我有用。