Java 如果我在根pom上从命令行运行插件,它在遍历模块时做什么?
我正在尝试使用插件: 我正在尝试在根pom上运行此命令:Java 如果我在根pom上从命令行运行插件,它在遍历模块时做什么?,java,scala,maven,gatling,Java,Scala,Maven,Gatling,我正在尝试使用插件: 我正在尝试在根pom上运行此命令: mvn package gatling:execute 此多模块项目仅在一个子pom中定义了此插件,如下所示: <plugins> <plugin> <groupId>io.gatling</groupId> <artifactId>gatling-maven-plugin</artifactId&g
mvn package gatling:execute
此多模块项目仅在一个子pom中定义了此插件,如下所示:
<plugins>
<plugin>
<groupId>io.gatling</groupId>
<artifactId>gatling-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.2.1</version>
<configuration>
<args>
<arg>-deprecation</arg>
<arg>-feature</arg>
<arg>-language:postfixOps</arg>
</args>
</configuration>
<executions>
<execution>
<id>scala-compile-first</id>
<phase>process-resources</phase>
<goals>
<goal>add-source</goal>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>scala-test-compile</id>
<phase>process-test-resources</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
这不是一个scala项目,所以这肯定与插件有关。运行mvn包
而不运行gatling:execute
工作正常
我对maven的了解不足以解决这个问题,因为我真的不知道maven在这里想做什么。如果它试图从根本上治理加特林,为什么?该插件没有在根pom中的任何位置定义。我的问题是:
cd
放入有这个插件的一个子pom中并在那里运行命令,但这意味着我将只在项目的一部分上运行package
。理想情况下,在运行插件之前,我希望在整个项目上运行包
使用这样的插件目标运行maven将为所有项目模块运行该目标,就像
mvn install
将安装每个模块一样。你不必在任何地方定义插件——如果你在命令行上指定它,它就会运行
您将插件的执行正确地绑定到一个或多个生命周期阶段,在本例中是流程资源
和流程测试资源
。如果运行mvn compile
,将执行过程资源
阶段,并且将为gatling插件运行添加源
和编译
目标。类似地,运行mvn test
(在mvn安装时也会运行该测试)将运行gatling插件的testCompile
目标
您要做的是还绑定execute
目标,如示例所示
上。如果您想先将所有包d绑定到
:
集成测试
执行
....
请注意,integrationtest
在package
之后(在install
之前),因此要运行它,请执行mvn integrationtest
或mvn install
,具体取决于插件。如果它是一个核心插件,它将使用一些。您还可以使用mvn-groupId:artifactId:version:goal
(或非常接近该语法的东西)指定任何随机maven插件在命令行上运行。该execute
提示非常有用。但是我希望这个插件在包之后运行,而不是在包运行期间。我还想先在其他地方运行包。我可以使用什么技术来实现这一点?更新了答案:有一个集成测试阶段正是为了这个目的。对不起,我沟通不好。我的意思是我只想在包后运行这个插件,有时,不是每次。我不希望在每个包之后都触发此操作,我希望明确地告诉它运行。不客气。顺便说一句,还有;使用配置文件,您可以使用
将其默认设置为true,并使用配置文件覆盖该值。但是在概要文件中定义插件更便于移植。祝你好运
[INFO] ------------------------------------------------------------------------
[INFO] Building root-pom 2.5.210-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- gatling-maven-plugin:2.1.7:execute (default-cli) @ root-pom ---
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at io.gatling.mojo.MainWithArgsInFile.runMain(MainWithArgsInFile.java:50)
at io.gatling.mojo.MainWithArgsInFile.main(MainWithArgsInFile.java:33)
Caused by: java.lang.RuntimeException: Can't find the jar matching (.*scala-library.*\.jar)$
at io.gatling.compiler.ZincCompiler$$anonfun$jarMatching$1$2.apply(ZincCompiler.scala:88)
at io.gatling.compiler.ZincCompiler$$anonfun$jarMatching$1$2.apply(ZincCompiler.scala:88)
at scala.Option.getOrElse(Option.scala:120)
at io.gatling.compiler.ZincCompiler$.jarMatching$1(ZincCompiler.scala:88)
at io.gatling.compiler.ZincCompiler$.setupZincCompiler(ZincCompiler.scala:91)
at io.gatling.compiler.ZincCompiler$delayedInit$body.apply(ZincCompiler.scala:106)
at scala.Function0$class.apply$mcV$sp(Function0.scala:40)
at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
at scala.App$$anonfun$main$1.apply(App.scala:71)
at scala.App$$anonfun$main$1.apply(App.scala:71)
at scala.collection.immutable.List.foreach(List.scala:318)
at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:32)
at scala.App$class.main(App.scala:71)
at io.gatling.compiler.ZincCompiler$.main(ZincCompiler.scala:35)
at io.gatling.compiler.ZincCompiler.main(ZincCompiler.scala)
... 6 more
<execution>
<phase>integration-test</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
....
</configuration>
</execution>