Форкирование Java с использованием плагина Exec Maven без использования цели `exec`

Из документации:

  1. exec:exec выполнять программы и программы Java в отдельном процессе.
  2. exec:java выполнять программы Java на одной и той же виртуальной машине.

Я хочу раскошелиться на Java-программу. Я уже получил это работает в exec:java но это не вилка. Таким образом, очевидным шагом является изменение цели на exec, Проблема в том, синтаксис для exec довольно сильно отличается от синтаксиса java, У него нет тегов типа includeProjectDependencies, includePluginDependenciesи т. д. Есть ли плагин, который я могу использовать, который подобен #1 в том смысле, что он разветвляется, но имеет удобный синтаксис, такой как #2? ИМО, № 2 должен просто иметь <fork>true</fork> конфигурации.

2 ответа

Также возможно порождать Java-процесс из Maven с помощью maven-antrun-plugin. Этот плагин экспортирует несколько путей к классам, охватывающих области компиляции / времени выполнения / тестирования, а также зависимости плагина.

Таким образом, выполнение класса в отдельном процессе с зависимостями компиляции и плагина будет выглядеть так:

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

Я думаю, что вы можете придерживаться 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>

Смотрите также страницу использования плагина

Другие вопросы по тегам