Skip to content

Commit 1f85c59

Browse files
committed
Add linux build
1 parent 90525a0 commit 1f85c59

7 files changed

Lines changed: 139 additions & 61 deletions

File tree

build-runtime.sh

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
#!/bin/sh
2+
set -eu
3+
4+
JDK_PATH="jdk/bellsoft-jdk11.0.22+12-windows-amd64-full"
5+
26
jlink --no-header-files \
37
--no-man-pages \
48
--compress=2 \
59
--strip-debug \
610
--add-modules java.compiler,java.datatransfer,java.desktop,java.instrument,java.logging,java.management,java.naming,java.sql,java.xml,javafx.base,javafx.controls,javafx.fxml,javafx.graphics,javafx.web,jdk.attach,jdk.jdi,jdk.jsobject,jdk.unsupported,jdk.crypto.ec \
7-
--module-path jdk/bellsoft-jdk11.0.22+12-windows-amd64-full/jmods \
11+
--module-path "${JDK_PATH}/jmods" \
812
--output win-runtime

pom.xml

Lines changed: 90 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
1+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
23
<modelVersion>4.0.0</modelVersion>
34

45
<groupId>com.github.onoderis</groupId>
@@ -10,8 +11,8 @@
1011

1112
<properties>
1213
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
13-
<failchat.distribution.directory>${project.build.directory}/failchat-v${project.version}
14-
</failchat.distribution.directory>
14+
15+
<failchat.artifactName>${project.artifactId}-${project.version}</failchat.artifactName>
1516

1617
<maven.compiler.source>11</maven.compiler.source>
1718
<maven.compiler.target>11</maven.compiler.target>
@@ -40,6 +41,8 @@
4041
<wiremock.version>2.27.2</wiremock.version>
4142
<kotest.version>4.3.2</kotest.version>
4243
<mockk.version>1.10.5</mockk.version>
44+
45+
<maven-resources-plugin.version>3.0.2</maven-resources-plugin.version>
4346
</properties>
4447

4548

@@ -320,7 +323,7 @@
320323

321324
<plugin>
322325
<artifactId>maven-resources-plugin</artifactId>
323-
<version>3.0.2</version>
326+
<version>${maven-resources-plugin.version}</version>
324327
<executions>
325328
<execution>
326329
<id>default-resources</id>
@@ -336,7 +339,6 @@
336339
<resources>
337340
<resource>
338341
<directory>${basedir}/src/main/resources</directory>
339-
<filtering>true</filtering>
340342
</resource>
341343
<resource>
342344
<directory>${basedir}/src/main/external-resources</directory>
@@ -349,14 +351,30 @@
349351
</configuration>
350352
</execution>
351353

354+
<execution>
355+
<id>copy-test-config</id>
356+
<phase>generate-test-resources</phase>
357+
<goals>
358+
<goal>testResources</goal>
359+
</goals>
360+
<configuration>
361+
<outputDirectory>${basedir}/target/test-classes/config</outputDirectory>
362+
<resources>
363+
<resource>
364+
<directory>${basedir}/src/main/resources/config</directory>
365+
</resource>
366+
</resources>
367+
</configuration>
368+
</execution>
369+
352370
<execution>
353371
<id>copy-resources-on-package</id>
354372
<phase>prepare-package</phase>
355373
<goals>
356374
<goal>copy-resources</goal>
357375
</goals>
358376
<configuration>
359-
<outputDirectory>${failchat.distribution.directory}</outputDirectory>
377+
<outputDirectory>${project.build.directory}/${failchat.artifactName}</outputDirectory>
360378
<resources>
361379
<resource>
362380
<directory>${basedir}/src/main/external-resources</directory>
@@ -368,7 +386,7 @@
368386
</excludes>
369387
</resource>
370388
<resource>
371-
<!-- .bat/.sh files with filtering -->
389+
<!-- copy .bat/.sh and replace version placeholder -->
372390
<directory>${basedir}/src/main/external-resources</directory>
373391
<filtering>true</filtering>
374392
<includes>
@@ -379,32 +397,17 @@
379397
</resources>
380398
</configuration>
381399
</execution>
382-
383-
<execution>
384-
<id>copy-test-config</id>
385-
<phase>generate-test-resources</phase>
386-
<goals>
387-
<goal>testResources</goal>
388-
</goals>
389-
<configuration>
390-
<outputDirectory>${basedir}/target/test-classes/config</outputDirectory>
391-
<resources>
392-
<resource>
393-
<directory>${basedir}/src/main/resources/config</directory>
394-
</resource>
395-
</resources>
396-
</configuration>
397-
</execution>
398400
</executions>
399401
</plugin>
400402

403+
<!-- maven-shade-plugin requires base artifact to generate uber jar-->
401404
<plugin>
402405
<groupId>org.apache.maven.plugins</groupId>
403406
<artifactId>maven-jar-plugin</artifactId>
404-
<version>3.0.2</version>
407+
<version>3.4.2</version>
405408
<configuration>
406-
<finalName>failchat-${project.version}</finalName>
407-
<outputDirectory>${failchat.distribution.directory}</outputDirectory>
409+
<finalName>${failchat.artifactName}</finalName>
410+
<outputDirectory>${project.build.directory}/${failchat.artifactName}</outputDirectory>
408411
<archive>
409412
<manifest>
410413
<mainClass>failchat.FailchatMainKt</mainClass>
@@ -423,23 +426,29 @@
423426
<plugin>
424427
<groupId>org.apache.maven.plugins</groupId>
425428
<artifactId>maven-shade-plugin</artifactId>
426-
<version>3.2.4</version>
429+
<version>3.6.0</version>
427430
<executions>
428431
<execution>
432+
<id>uber-jar</id>
429433
<phase>package</phase>
430434
<goals>
431435
<goal>shade</goal>
432436
</goals>
433437
<configuration>
438+
<createDependencyReducedPom>false</createDependencyReducedPom>
434439
<transformers>
435-
<transformer implementation="org.apache.maven.plugins.shade.resource.ApacheLicenseResourceTransformer" />
436-
<transformer implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer" />
437-
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
440+
<transformer
441+
implementation="org.apache.maven.plugins.shade.resource.ApacheLicenseResourceTransformer"/>
442+
<transformer
443+
implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer"/>
444+
<transformer
445+
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
438446
<manifestEntries>
439447
<Main-Class>failchat.FailchatMainKt</Main-Class>
440448
</manifestEntries>
441449
</transformer>
442-
<transformer implementation="org.apache.maven.plugins.shade.resource.properties.PropertiesTransformer">
450+
<transformer
451+
implementation="org.apache.maven.plugins.shade.resource.properties.PropertiesTransformer">
443452
<resource>META-INF/io.netty.versions.properties</resource>
444453
<ordinalKey>ordinal</ordinalKey>
445454
</transformer>
@@ -459,7 +468,6 @@
459468
</excludes>
460469
</filter>
461470
</filters>
462-
<createDependencyReducedPom>false</createDependencyReducedPom>
463471
</configuration>
464472
</execution>
465473
</executions>
@@ -479,7 +487,8 @@
479487
<excludeDefaultDirectories>true</excludeDefaultDirectories>
480488
<filesets>
481489
<fileset>
482-
<directory>${failchat.distribution.directory}/runtime</directory>
490+
<directory>${project.build.directory}/runtime-windows</directory>
491+
<directory>${project.build.directory}/runtime-linux</directory>
483492
</fileset>
484493
</filesets>
485494
</configuration>
@@ -490,10 +499,10 @@
490499
<plugin>
491500
<groupId>org.codehaus.mojo</groupId>
492501
<artifactId>exec-maven-plugin</artifactId>
493-
<version>3.0.0</version>
502+
<version>3.5.0</version>
494503
<executions>
495504
<execution>
496-
<id>build-app-runtime</id>
505+
<id>build-windows-runtime</id>
497506
<phase>package</phase>
498507
<goals>
499508
<goal>exec</goal>
@@ -511,11 +520,36 @@
511520
java.compiler,java.datatransfer,java.desktop,java.instrument,java.logging,java.management,java.naming,java.sql,java.xml,javafx.base,javafx.controls,javafx.fxml,javafx.graphics,javafx.web,jdk.attach,jdk.jdi,jdk.jsobject,jdk.unsupported,jdk.crypto.ec
512521
</argument>
513522
<!-- use specific jdk to build an app runtime. this is required to compile across different OS -->
514-
<!-- comment the next 2 lines to build with a jdk in PATH-->
515523
<argument>--module-path</argument>
516524
<argument>jdk/bellsoft-jdk11.0.22+12-windows-amd64-full/jmods</argument>
517525
<argument>--output</argument>
518-
<argument>${failchat.distribution.directory}/runtime</argument>
526+
<argument>${project.build.directory}/${failchat.artifactName}/runtime-windows</argument>
527+
</arguments>
528+
</configuration>
529+
</execution>
530+
<execution>
531+
<id>build-linux-runtime</id>
532+
<phase>package</phase>
533+
<goals>
534+
<goal>exec</goal>
535+
</goals>
536+
<configuration>
537+
<executable>jlink</executable>
538+
<arguments>
539+
<argument>--no-header-files</argument>
540+
<argument>--no-man-pages</argument>
541+
<argument>--compress=2</argument>
542+
<argument>--strip-debug</argument>
543+
<argument>--add-modules</argument>
544+
<!-- TODO dynamically generate the list of modules -->
545+
<argument>
546+
java.compiler,java.datatransfer,java.desktop,java.instrument,java.logging,java.management,java.naming,java.sql,java.xml,javafx.base,javafx.controls,javafx.fxml,javafx.graphics,javafx.web,jdk.attach,jdk.jdi,jdk.jsobject,jdk.unsupported,jdk.crypto.ec
547+
</argument>
548+
<!-- use specific jdk to build an app runtime. this is required to compile across different OS -->
549+
<argument>--module-path</argument>
550+
<argument>jdk/bellsoft-jdk11.0.22+12-linux-amd64-full/jmods</argument>
551+
<argument>--output</argument>
552+
<argument>${project.build.directory}/${failchat.artifactName}/runtime-linux</argument>
519553
</arguments>
520554
</configuration>
521555
</execution>
@@ -529,7 +563,7 @@
529563
<executable>java</executable>
530564
<arguments>
531565
<argument>-classpath</argument>
532-
<classpath />
566+
<classpath/>
533567
<argument>failchat.FailchatMainKt</argument>
534568
<argument>--skip-release-check</argument>
535569
<argument>--enable-console-logging</argument>
@@ -546,22 +580,36 @@
546580

547581
<plugin>
548582
<artifactId>maven-assembly-plugin</artifactId>
549-
<version>3.0.0</version>
583+
<version>3.7.1</version>
550584
<executions>
551585
<execution>
552-
<id>zip</id>
586+
<id>distribution-windows</id>
553587
<phase>package</phase>
554588
<goals>
555589
<goal>single</goal>
556590
</goals>
557591
<configuration>
558-
<finalName>failchat-v${project.version}</finalName>
592+
<finalName>${failchat.artifactName}-windows</finalName>
559593
<appendAssemblyId>false</appendAssemblyId>
560594
<archiverConfig>
561595
<compress>true</compress>
562596
</archiverConfig>
563597
<descriptors>
564-
<descriptor>src/main/assembly/zip.xml</descriptor>
598+
<descriptor>src/main/assembly/distribution-windows.xml</descriptor>
599+
</descriptors>
600+
</configuration>
601+
</execution>
602+
<execution>
603+
<id>distribution-linux</id>
604+
<phase>package</phase>
605+
<goals>
606+
<goal>single</goal>
607+
</goals>
608+
<configuration>
609+
<finalName>${failchat.artifactName}-linux</finalName>
610+
<appendAssemblyId>false</appendAssemblyId>
611+
<descriptors>
612+
<descriptor>src/main/assembly/distribution-linux.xml</descriptor>
565613
</descriptors>
566614
</configuration>
567615
</execution>
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2+
xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.2.0 https://maven.apache.org/xsd/assembly-2.2.0.xsd">
3+
<id>distribution-linux</id>
4+
<formats>
5+
<format>tar.gz</format>
6+
</formats>
7+
<baseDirectory>${failchat.artifactName}</baseDirectory>
8+
<fileSets>
9+
<fileSet>
10+
<directory>${project.build.directory}/${failchat.artifactName}</directory>
11+
<includes>
12+
<include>java-agents/**</include>
13+
<include>runtime-linux/**</include>
14+
<include>skins/**</include>
15+
<include>*.jar</include>
16+
<include>*.sh</include>
17+
</includes>
18+
<outputDirectory>./</outputDirectory>
19+
</fileSet>
20+
</fileSets>
21+
</assembly>
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2+
xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.2.0 https://maven.apache.org/xsd/assembly-2.2.0.xsd">
3+
<id>distribution-windows</id>
4+
<formats>
5+
<format>zip</format>
6+
</formats>
7+
<baseDirectory>${failchat.artifactName}</baseDirectory>
8+
<fileSets>
9+
<fileSet>
10+
<directory>${project.build.directory}/${failchat.artifactName}</directory>
11+
<includes>
12+
<include>java-agents/**</include>
13+
<include>runtime-windows/**</include>
14+
<include>skins/**</include>
15+
<include>*.jar</include>
16+
<include>*.bat</include>
17+
</includes>
18+
<outputDirectory>./</outputDirectory>
19+
</fileSet>
20+
</fileSets>
21+
</assembly>

src/main/assembly/zip.xml

Lines changed: 0 additions & 16 deletions
This file was deleted.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
start ./runtime/bin/javaw -Xmx200m -Xms100m -XX:+UseG1GC -javaagent:java-agents/transparent-webview-patch.jar -jar failchat-${project.version}.jar
1+
start ./runtime-windows/bin/javaw -Xmx200m -Xms100m -XX:+UseG1GC -javaagent:java-agents/transparent-webview-patch.jar -jar failchat-${project.version}.jar
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
#!/bin/sh
2-
java -Xmx200m -Xms100m -XX:+UseG1GC -javaagent:java-agents/transparent-webview-patch.jar -jar failchat-${project.version}.jar > /dev/null 2>&1 &
2+
runtime-linux/bin/java -Xmx200m -Xms100m -XX:+UseG1GC -javaagent:java-agents/transparent-webview-patch.jar -jar failchat-${project.version}.jar > /dev/null 2>&1 &

0 commit comments

Comments
 (0)