Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将Maven依赖项的JAR位置指定为插件参数?_Java_Maven_Maven Surefire Plugin - Fatal编程技术网

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

Java 如何将Maven依赖项的JAR位置指定为插件参数?,java,maven,maven-surefire-plugin,Java,Maven,Maven Surefire Plugin,我尝试按照中的配置使用本地repo中的jar位置作为插件参数,但似乎不起作用。我不知道这是否是因为Maven版本比响应版本更新(我使用的是Maven 3.2.5) 在pom.xml中,我需要向surefire插件定义中添加一个javaagent。javaagent jar文件是我的项目中的一个依赖项 我尝试了以下方法: <dependencies> <dependency> <groupId>org.jmockit<

我尝试按照中的配置使用本地repo中的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>
很明显,这个参数并没有得到扩展。我希望/期待看到类似于
-javaagent:c:\users\eric\.m2\repository\org.jmockit\1.20\jmockit-1.20.jar
或类似的东西

有没有一种干净的方法可以从插件配置中的依赖项引用jar?我知道我可以使用依赖插件将jar复制到目标文件夹中的已知位置,然后指向该位置,但我希望有一个更简单的解决方案,不需要中间步骤。

包含一个目标
构建类路径
,可以解决此问题

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

mvn dependency:build-classpath -DincludeArtifactIds=testng -DincludeGroupIds=testng
其结果是:

C:\repository\org\testng\testng\6.8.21\testng-6.8.21.jar
生成的类路径也可以放入属性
outputProperty
。。。。
这也可以配置到pom中…

要进行变量扩展,需要添加maven依赖插件

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

maven依赖插件
GetClassPathFileName
性质
org.apache.maven.plugins
maven surefire插件
-javaagent:${org.jmockit:jmockit:jar}
您需要如下设置“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>

org.apache.maven.plugins
maven surefire插件
${surefire.version}
-javaagent:“${localRepository}/org/jmockit/jmockit/${jmockit.version}/jmockit-${jmockit.version}.jar”
您需要设置jmockit jar所在的.m2 repo路径。这对我有用

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