13

文档中:

  1. exec:exec在单独的进程中执行程序和 Java 程序。
  2. exec:java在同一个 VM 中执行 Java 程序。

我想分叉一个java程序。我已经让它工作了,exec:java但这并没有分叉。因此,显而易见的举措是将目标更改为exec. 问题是, forexec的语法与java. 它没有像includeProjectDependencies,includePluginDependencies等标签。有没有一个我可以使用的插件就像 #1 在它分叉的意义上说,但有像 #2 这样的方便语法?IMO,#2 应该只有一个<fork>true</fork>配置。

4

2 回答 2

4

也可以使用maven-antrun-plugin从 Maven 生成 Java 进程。这个插件导出了几个覆盖编译/运行时/测试范围的类路径,以及插件依赖项。

因此,在具有编译和插件依赖项的单独进程中执行一个类将如下所示:

<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

于 2018-04-25T16:33:41.797 回答
3

I think you can stick to exec:exec, using that kind of configuration if you want to give the project classpath to the Java process you use:

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

See also the plugin Usage page

于 2013-06-12T10:13:27.813 回答