Skip to content

Commit af40558

Browse files
NmurtasDevclaude
andcommitted
Add macOS and Linux native packaging support
- Add jpackage Maven profiles for macOS (.app bundle) and Linux (app-image) - Add linux-deb profile for Debian/Ubuntu .deb packages - Update README with comprehensive build instructions for all platforms - Add platform-specific distributions table - Use exec-maven-plugin to invoke jpackage - JRE bundled automatically with all native packages Profiles available: - macos: Creates macOS .app bundle - linux: Creates Linux app-image - linux-deb: Creates Debian .deb package 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 335ca67 commit af40558

2 files changed

Lines changed: 191 additions & 0 deletions

File tree

README.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,44 @@ jlink --output jre --add-modules java.base,java.desktop --strip-debug --compress
5858
mvn clean package -Pwindows-standalone
5959
```
6060

61+
### Build macOS App Bundle
62+
63+
```bash
64+
git clone https://github.com/NmurtasDev/AndroidEmulatorManager.git
65+
cd AndroidEmulatorManager
66+
mvn clean package -Pmacos
67+
# Output: target/AndroidEmulatorManager.app/
68+
```
69+
70+
### Build Linux App Bundle
71+
72+
```bash
73+
git clone https://github.com/NmurtasDev/AndroidEmulatorManager.git
74+
cd AndroidEmulatorManager
75+
mvn clean package -Plinux
76+
# Output: target/AndroidEmulatorManager/ (executable: bin/AndroidEmulatorManager)
77+
```
78+
79+
### Build Linux DEB Package
80+
81+
```bash
82+
git clone https://github.com/NmurtasDev/AndroidEmulatorManager.git
83+
cd AndroidEmulatorManager
84+
mvn clean package -Plinux-deb
85+
# Output: target/android-emulator-manager_3.0.0_amd64.deb
86+
```
87+
88+
## Platform-Specific Distributions
89+
90+
| Platform | Profile | Output | Includes JRE |
91+
|----------|---------|--------|--------------|
92+
| **Windows** | `windows` | `.exe` (requires Java) ||
93+
| **Windows** | `windows-standalone` | `.exe` (standalone) ||
94+
| **macOS** | `macos` | `.app` bundle ||
95+
| **Linux** | `linux` | app-image ||
96+
| **Linux** | `linux-deb` | `.deb` package ||
97+
| **All** | default | `.jar` (universal) ||
98+
6199
## Usage
62100

63101
1. **Launch the application**

pom.xml

Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,159 @@
179179
<exe.suffix>-standalone</exe.suffix>
180180
</properties>
181181
</profile>
182+
183+
<!-- macOS App Bundle with jpackage -->
184+
<profile>
185+
<id>macos</id>
186+
<build>
187+
<plugins>
188+
<plugin>
189+
<groupId>org.codehaus.mojo</groupId>
190+
<artifactId>exec-maven-plugin</artifactId>
191+
<version>3.1.0</version>
192+
<executions>
193+
<execution>
194+
<id>jpackage-macos</id>
195+
<phase>package</phase>
196+
<goals>
197+
<goal>exec</goal>
198+
</goals>
199+
<configuration>
200+
<executable>jpackage</executable>
201+
<arguments>
202+
<argument>--input</argument>
203+
<argument>${project.build.directory}</argument>
204+
<argument>--name</argument>
205+
<argument>AndroidEmulatorManager</argument>
206+
<argument>--main-jar</argument>
207+
<argument>${project.artifactId}-${project.version}-jar-with-dependencies.jar</argument>
208+
<argument>--main-class</argument>
209+
<argument>net.nicolamurtas.android.emulator.AndroidEmulatorManager</argument>
210+
<argument>--type</argument>
211+
<argument>app-image</argument>
212+
<argument>--dest</argument>
213+
<argument>${project.build.directory}</argument>
214+
<argument>--app-version</argument>
215+
<argument>3.0.0</argument>
216+
<argument>--vendor</argument>
217+
<argument>Nicola Murtas</argument>
218+
<argument>--copyright</argument>
219+
<argument>MIT License</argument>
220+
<argument>--description</argument>
221+
<argument>Android Emulator Manager - Manage Android SDK and AVDs</argument>
222+
<argument>--java-options</argument>
223+
<argument>-Xmx1024m</argument>
224+
</arguments>
225+
</configuration>
226+
</execution>
227+
</executions>
228+
</plugin>
229+
</plugins>
230+
</build>
231+
</profile>
232+
233+
<!-- Linux AppImage with jpackage -->
234+
<profile>
235+
<id>linux</id>
236+
<build>
237+
<plugins>
238+
<plugin>
239+
<groupId>org.codehaus.mojo</groupId>
240+
<artifactId>exec-maven-plugin</artifactId>
241+
<version>3.1.0</version>
242+
<executions>
243+
<execution>
244+
<id>jpackage-linux</id>
245+
<phase>package</phase>
246+
<goals>
247+
<goal>exec</goal>
248+
</goals>
249+
<configuration>
250+
<executable>jpackage</executable>
251+
<arguments>
252+
<argument>--input</argument>
253+
<argument>${project.build.directory}</argument>
254+
<argument>--name</argument>
255+
<argument>AndroidEmulatorManager</argument>
256+
<argument>--main-jar</argument>
257+
<argument>${project.artifactId}-${project.version}-jar-with-dependencies.jar</argument>
258+
<argument>--main-class</argument>
259+
<argument>net.nicolamurtas.android.emulator.AndroidEmulatorManager</argument>
260+
<argument>--type</argument>
261+
<argument>app-image</argument>
262+
<argument>--dest</argument>
263+
<argument>${project.build.directory}</argument>
264+
<argument>--app-version</argument>
265+
<argument>3.0.0</argument>
266+
<argument>--vendor</argument>
267+
<argument>Nicola Murtas</argument>
268+
<argument>--copyright</argument>
269+
<argument>MIT License</argument>
270+
<argument>--description</argument>
271+
<argument>Android Emulator Manager - Manage Android SDK and AVDs</argument>
272+
<argument>--java-options</argument>
273+
<argument>-Xmx1024m</argument>
274+
</arguments>
275+
</configuration>
276+
</execution>
277+
</executions>
278+
</plugin>
279+
</plugins>
280+
</build>
281+
</profile>
282+
283+
<!-- Linux DEB package -->
284+
<profile>
285+
<id>linux-deb</id>
286+
<build>
287+
<plugins>
288+
<plugin>
289+
<groupId>org.codehaus.mojo</groupId>
290+
<artifactId>exec-maven-plugin</artifactId>
291+
<version>3.1.0</version>
292+
<executions>
293+
<execution>
294+
<id>jpackage-deb</id>
295+
<phase>package</phase>
296+
<goals>
297+
<goal>exec</goal>
298+
</goals>
299+
<configuration>
300+
<executable>jpackage</executable>
301+
<arguments>
302+
<argument>--input</argument>
303+
<argument>${project.build.directory}</argument>
304+
<argument>--name</argument>
305+
<argument>android-emulator-manager</argument>
306+
<argument>--main-jar</argument>
307+
<argument>${project.artifactId}-${project.version}-jar-with-dependencies.jar</argument>
308+
<argument>--main-class</argument>
309+
<argument>net.nicolamurtas.android.emulator.AndroidEmulatorManager</argument>
310+
<argument>--type</argument>
311+
<argument>deb</argument>
312+
<argument>--dest</argument>
313+
<argument>${project.build.directory}</argument>
314+
<argument>--app-version</argument>
315+
<argument>3.0.0</argument>
316+
<argument>--vendor</argument>
317+
<argument>Nicola Murtas</argument>
318+
<argument>--copyright</argument>
319+
<argument>MIT License</argument>
320+
<argument>--description</argument>
321+
<argument>Android Emulator Manager - Manage Android SDK and AVDs</argument>
322+
<argument>--linux-menu-group</argument>
323+
<argument>Development</argument>
324+
<argument>--linux-shortcut</argument>
325+
<argument>--java-options</argument>
326+
<argument>-Xmx1024m</argument>
327+
</arguments>
328+
</configuration>
329+
</execution>
330+
</executions>
331+
</plugin>
332+
</plugins>
333+
</build>
334+
</profile>
182335
</profiles>
183336

184337
</project>

0 commit comments

Comments
 (0)