exec:exec
在一个单独的过程中执行程序和Java程序。exec:java
在同一个VM中执行Java程序。我想分叉一个java程序。我已经在exec:java
中使用了它但是没有分叉。所以明显的举措是将目标改为exec
。问题是,exec
的语法与java
的语法非常不同。它没有像includeProjectDependencies
,includePluginDependencies
等标签。是否有一个我可以使用的插件,就像它在分叉的意义上的#1一样,但它有一个方便的语法,如#2? IMO,#2应该只有<fork>true</fork>
配置。
答案 0 :(得分:1)
我认为你可以坚持使用exec:exec,如果你想将项目类路径提供给你使用的Java进程,那就使用这种配置:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<configuration>
<executable>java</executable>
<longClasspath>true</longClasspath>
<arguments>
<argument>-XX:MaxPermSize=128M</argument>
<argument>-Xmx1024M</argument>
<argument>-Xdebug</argument>
<argument>-Xrunjdwp:transport=dt_socket,address=8888,server=y,suspend=n</argument>
<argument>-classpath</argument>
<classpath/>
</arguments>
</configuration>
</plugin>
答案 1 :(得分:1)
也可以使用maven-antrun-plugin从Maven生成Java进程。这个插件exports several classpaths涵盖了编译/运行时/测试范围,以及插件依赖项。
在具有编译和插件依赖性的单独进程中执行类将如下所示:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<java classname="com.example.MainClass" fork="true">
<classpath>
<path refid="maven.compile.classpath"/>
<path refid="maven.plugin.classpath"/>
</classpath>
</java>
</target>
</configuration>
</plugin>
这是使用mvn antrun:run
代替exec:exec
执行的。