Следуя советам Braheem, я смог выполнить это, используя плагин exec-maven-plugin
, однако я немного изменился, чтобы сделать его более независимым от платформы.
Используя profile definitions from this answer, я могу использовать ${script.extension}
для переключения между .sh и .bat
У меня есть следующее определение плагина, который я могу выполнить, используя verify
цели, которая в конечном счете станет пользовательским целевой полностью.
<plugin>
<artifactId>exec-maven-plugin</artifactId>
<groupId>org.codehaus.mojo</groupId>
<version>1.5.0</version>
<executions>
<execution>
<id>Application Launcher</id>
<phase>verify</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>"${project.build.directory}\${project.artifactId}-${project.version}\bin\launcher${script.extension}"</executable>
<arguments>
<argument>${flags}</argument>
</arguments>
</configuration>
</plugin>
С выше определением плагина, я доступен
# Launch
mvn package verify
# Calls [ launcher.bat ]
# Launch with debug flag
mvn package verify -Dflags=--debug
# Calls [ launcher.bat --debug ]
Тогда из моих сценариев, я могу справиться с --debug
флагом, и, при необходимости, изменить команду запуска.
...
IF "%1"=="--debug" (
REM add VM arguments to suspend the JVM and wait for debugger to attach
SET vmOpts=%vmOpts% -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
REM some additional arguments to send to my application
SET extOpts=%extOpts% --debug --console
)
...
REM start the launcher.jar app with assemble arguments
START java %vmOpts% -jar launcher.jar %extOpts%
С с Eclipse, у меня теперь есть 3 цели запуска.
Стандартный Launch
Стандартный запуск может быть запущен только работает
mvn package verify
Для отладки я сейчас требуют два запуска цели
Запуск Debug
mvn package verify -Ddebug=--debug
Это заставит приложение для запуска, и повесить, ожидая отладчик для присоединения, с этого момента, я могу запустить вторую мишень из затмения, которое просто сконфигурированный для
Запуск отладки Прикрепить
Эта цель запуска проста connects to a remote application, как описано в документации Eclipse.
Запуск этой цели подключается к запущенному jvm, и код пользовательского пространства возобновляется, что позволяет мне отлаживать как обычно - в то время как приложение заканчивается из каталога скомпилированных dist.
После this answer, я могу просто экспортировать три конфигурации запуска, и зафиксировать их с самой пусковой установки, что позволяет новым пользователям хранилища, чтобы просто импортировать цели и быть готовым идти в считанные секунды.
Вы ищете что-то подобное (или точно) как удаленное отладочное приложение? http://javarevisited.blogspot.ca/2011/02/how-to-setup-remote-debugging-in.html – ochi
Удаленная отладка - это то, как я это делаю сейчас. Я хотел бы просто нажать кнопку запуска из eclipse, а не внешние команды, а затем удаленную отладку. –
Итак, действительно ли статья в ссылке? – ochi