Theo lời khuyên của Braheem, tôi có thể thực hiện việc này bằng cách sử dụng plugin exec-maven-plugin
, tuy nhiên tôi đã thay đổi một chút để làm cho nền tảng độc lập hơn.
Sử dụng profile definitions from this answer, tôi có thể sử dụng ${script.extension}
để trao đổi giữa sh và .bat
Tôi có nghĩa Plugin sau đó tôi có thể thực hiện bằng cách sử dụng mục tiêu verify
, mà cuối cùng sẽ trở thành một mục tiêu tùy chỉnh hoàn toàn.
<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>
Với định nghĩa Plugin trên, tôi đã có sẵn
# Launch
mvn package verify
# Calls [ launcher.bat ]
# Launch with debug flag
mvn package verify -Dflags=--debug
# Calls [ launcher.bat --debug ]
Sau đó, từ kịch bản của tôi, tôi có thể xử lý các --debug
cờ, và nếu cần, sửa đổi lệnh khởi động.
...
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%
Từ với Eclipse, tôi hiện có 3 mục tiêu khởi chạy.
Launch Chuẩn
Một phóng tiêu chuẩn có thể được điều hành bởi chỉ chạy
mvn package verify
Để gỡ rối, tôi yêu cầu tại hai mắt nhắm
Launch gỡ lỗi
mvn package verify -Ddebug=--debug
Điều này sẽ gây ra các ứng dụng để khởi động, và treo, chờ đợi debugger để đính kèm, từ thời điểm này, tôi có thể chạy các mục tiêu thứ hai từ nhật thực, mà chỉ đơn giản được cấu hình để
Launch gỡ lỗi Đính kèm
Mục tiêu khởi chạy này chỉ đơn giản là connects to a remote application, như được mô tả trong tài liệu của Eclipse.
Chạy mục tiêu này kết nối với jvm đang chạy và mã không gian người dùng được tiếp tục, cho phép tôi gỡ lỗi như bình thường - trong khi ứng dụng đang chạy ra khỏi thư mục dist đã biên dịch.
Sau this answer, tôi chỉ đơn giản là có thể xuất ba cấu hình khởi động, và cam kết chúng với các phóng bản thân, cho phép người dùng mới của kho chỉ đơn giản là nhập các mục tiêu và sẵn sàng để đi trong vài giây.
bạn đang xem xét việc thực hiện điều gì đó tương tự (hoặc chính xác) là gỡ lỗi từ xa ứng dụng của bạn? http://javarevisited.blogspot.ca/2011/02/how-to-setup-remote-debugging-in.html – ochi
Gỡ lỗi từ xa là cách tôi hiện đang thực hiện. Tôi muốn chỉ đơn giản là có thể nhấp vào nút chạy từ bên trong nhật thực, không phải lệnh bên ngoài, sau đó gỡ lỗi từ xa. –
Vậy, bài viết trong liên kết có giúp ích gì không? – ochi