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

3
我尝试按照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个回答

3
为了进行变量扩展,需要添加 maven-dependency-plugin
        <!-- 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>

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 仓库路径。这对我有效。


-1

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中进行配置...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接