Skip to content

Commit 089bd28

Browse files
authored
Merge pull request quarkusio#36164 from geoand/quarkusio#36154-take2
Support Java 21 main launch protocol
2 parents 2c7e36f + fd9f134 commit 089bd28

12 files changed

+636
-9
lines changed

core/deployment/src/main/java/io/quarkus/deployment/steps/MainClassBuildStep.java

Lines changed: 207 additions & 9 deletions
Large diffs are not rendered by default.
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package io.quarkus.commandmode.launch;
2+
3+
import org.assertj.core.api.Assertions;
4+
import org.junit.jupiter.api.Test;
5+
import org.junit.jupiter.api.extension.RegisterExtension;
6+
7+
import io.quarkus.runtime.annotations.QuarkusMain;
8+
import io.quarkus.test.QuarkusProdModeTest;
9+
10+
public class IgnorePrivateMainCommandModeTestCase {
11+
@RegisterExtension
12+
static final QuarkusProdModeTest config = new QuarkusProdModeTest()
13+
.withApplicationRoot((jar) -> jar
14+
.addClasses(HelloWorldSuperSuper.class, HelloWorldSuper.class, HelloWorldMain.class))
15+
.setApplicationName("run-exit")
16+
.setApplicationVersion("0.1-SNAPSHOT")
17+
.setExpectExit(true)
18+
.setRun(true);
19+
20+
@Test
21+
public void testRun() {
22+
Assertions.assertThat(config.getStartupConsoleOutput()).contains("Hello World");
23+
Assertions.assertThat(config.getExitCode()).isEqualTo(0);
24+
}
25+
26+
@QuarkusMain
27+
public static class HelloWorldMain extends HelloWorldSuper {
28+
29+
private static void main(String[] args) {
30+
System.out.println("Private Static World");
31+
}
32+
}
33+
34+
public static class HelloWorldSuperSuper {
35+
36+
protected void main() {
37+
System.out.println("Hello World");
38+
}
39+
}
40+
41+
public static class HelloWorldSuper extends HelloWorldSuperSuper {
42+
43+
private void main(String[] args) {
44+
System.out.println("Private Instance World");
45+
}
46+
}
47+
48+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package io.quarkus.commandmode.launch;
2+
3+
import org.assertj.core.api.Assertions;
4+
import org.junit.jupiter.api.Test;
5+
import org.junit.jupiter.api.extension.RegisterExtension;
6+
7+
import io.quarkus.runtime.annotations.QuarkusMain;
8+
import io.quarkus.test.QuarkusProdModeTest;
9+
10+
public class InstanceMainCommandModeTestCase {
11+
@RegisterExtension
12+
static final QuarkusProdModeTest config = new QuarkusProdModeTest()
13+
.withApplicationRoot((jar) -> jar
14+
.addClasses(HelloWorldMain.class))
15+
.setApplicationName("run-exit")
16+
.setApplicationVersion("0.1-SNAPSHOT")
17+
.setExpectExit(true)
18+
.setRun(true);
19+
20+
@Test
21+
public void testRun() {
22+
Assertions.assertThat(config.getStartupConsoleOutput()).contains("Hello World");
23+
Assertions.assertThat(config.getExitCode()).isEqualTo(0);
24+
}
25+
26+
@QuarkusMain
27+
public static class HelloWorldMain {
28+
29+
void main(String[] args) {
30+
System.out.println("Hello World");
31+
}
32+
}
33+
34+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package io.quarkus.commandmode.launch;
2+
3+
import org.assertj.core.api.Assertions;
4+
import org.junit.jupiter.api.Test;
5+
import org.junit.jupiter.api.extension.RegisterExtension;
6+
7+
import io.quarkus.runtime.annotations.QuarkusMain;
8+
import io.quarkus.test.QuarkusProdModeTest;
9+
10+
public class InstanceMainInSuperClassCommandModeTestCase {
11+
@RegisterExtension
12+
static final QuarkusProdModeTest config = new QuarkusProdModeTest()
13+
.withApplicationRoot((jar) -> jar
14+
.addClasses(HelloWorldSuperSuper.class, HelloWorldSuper.class, HelloWorldMain.class))
15+
.setApplicationName("run-exit")
16+
.setApplicationVersion("0.1-SNAPSHOT")
17+
.setExpectExit(true)
18+
.setRun(true);
19+
20+
@Test
21+
public void testRun() {
22+
Assertions.assertThat(config.getStartupConsoleOutput()).contains("Hello World");
23+
Assertions.assertThat(config.getExitCode()).isEqualTo(0);
24+
}
25+
26+
@QuarkusMain
27+
public static class HelloWorldMain extends HelloWorldSuper {
28+
29+
}
30+
31+
public static class HelloWorldSuperSuper {
32+
33+
protected void main() {
34+
System.out.println("Hello World");
35+
}
36+
}
37+
38+
public static class HelloWorldSuper extends HelloWorldSuperSuper {
39+
40+
protected void main2() {
41+
System.out.println("Hello");
42+
}
43+
}
44+
45+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package io.quarkus.commandmode.launch;
2+
3+
import org.assertj.core.api.Assertions;
4+
import org.junit.jupiter.api.Test;
5+
import org.junit.jupiter.api.extension.RegisterExtension;
6+
7+
import io.quarkus.runtime.annotations.QuarkusMain;
8+
import io.quarkus.test.QuarkusProdModeTest;
9+
10+
public class InstanceMainInSuperClassNoArgsCommandModeTestCase {
11+
@RegisterExtension
12+
static final QuarkusProdModeTest config = new QuarkusProdModeTest()
13+
.withApplicationRoot((jar) -> jar
14+
.addClasses(HelloWorldSuper.class, HelloWorldMain.class))
15+
.setApplicationName("run-exit")
16+
.setApplicationVersion("0.1-SNAPSHOT")
17+
.setExpectExit(true)
18+
.setRun(true);
19+
20+
@Test
21+
public void testRun() {
22+
Assertions.assertThat(config.getStartupConsoleOutput()).contains("Hello World");
23+
Assertions.assertThat(config.getExitCode()).isEqualTo(0);
24+
}
25+
26+
@QuarkusMain
27+
public static class HelloWorldMain extends HelloWorldSuper {
28+
29+
}
30+
31+
public static class HelloWorldSuper {
32+
33+
void main() {
34+
System.out.println("Hello World");
35+
}
36+
37+
void main2() {
38+
System.out.println("Hello");
39+
}
40+
41+
void main3(String[] args) {
42+
System.out.println("Hello");
43+
}
44+
}
45+
46+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package io.quarkus.commandmode.launch;
2+
3+
import org.assertj.core.api.Assertions;
4+
import org.junit.jupiter.api.Test;
5+
import org.junit.jupiter.api.extension.RegisterExtension;
6+
7+
import io.quarkus.runtime.annotations.QuarkusMain;
8+
import io.quarkus.test.QuarkusProdModeTest;
9+
10+
public class InstanceMainNoArgsCommandModeTestCase {
11+
@RegisterExtension
12+
static final QuarkusProdModeTest config = new QuarkusProdModeTest()
13+
.withApplicationRoot((jar) -> jar
14+
.addClasses(HelloWorldMain.class))
15+
.setApplicationName("run-exit")
16+
.setApplicationVersion("0.1-SNAPSHOT")
17+
.setExpectExit(true)
18+
.setRun(true);
19+
20+
@Test
21+
public void testRun() {
22+
Assertions.assertThat(config.getStartupConsoleOutput()).contains("Hello World");
23+
Assertions.assertThat(config.getExitCode()).isEqualTo(0);
24+
}
25+
26+
@QuarkusMain
27+
public static class HelloWorldMain {
28+
29+
void main() {
30+
System.out.println("Hello World");
31+
}
32+
}
33+
34+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package io.quarkus.commandmode.launch;
2+
3+
import org.assertj.core.api.Assertions;
4+
import org.junit.jupiter.api.Test;
5+
import org.junit.jupiter.api.extension.RegisterExtension;
6+
7+
import io.quarkus.runtime.annotations.QuarkusMain;
8+
import io.quarkus.test.QuarkusProdModeTest;
9+
10+
public class MixWithAndWithoutArgsMainCommandModeTestCase {
11+
@RegisterExtension
12+
static final QuarkusProdModeTest config = new QuarkusProdModeTest()
13+
.withApplicationRoot((jar) -> jar
14+
.addClasses(HelloWorldMain.class))
15+
.setApplicationName("run-exit")
16+
.setApplicationVersion("0.1-SNAPSHOT")
17+
.setExpectExit(true)
18+
.setRun(true);
19+
20+
@Test
21+
public void testRun() {
22+
Assertions.assertThat(config.getStartupConsoleOutput()).contains("Hello World");
23+
Assertions.assertThat(config.getExitCode()).isEqualTo(0);
24+
}
25+
26+
@QuarkusMain
27+
public static class HelloWorldMain {
28+
29+
static void main(String[] args) {
30+
System.out.println("Hello World");
31+
}
32+
33+
void main() {
34+
System.out.println("Hi World");
35+
}
36+
}
37+
38+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package io.quarkus.commandmode.launch;
2+
3+
import org.assertj.core.api.Assertions;
4+
import org.junit.jupiter.api.Test;
5+
import org.junit.jupiter.api.extension.RegisterExtension;
6+
7+
import io.quarkus.runtime.annotations.QuarkusMain;
8+
import io.quarkus.test.QuarkusProdModeTest;
9+
10+
public class MultipleInstanceMainInSuperClassCommandModeTestCase {
11+
@RegisterExtension
12+
static final QuarkusProdModeTest config = new QuarkusProdModeTest()
13+
.withApplicationRoot((jar) -> jar
14+
.addClasses(HelloWorldSuperSuper.class, HelloWorldSuper.class, HelloWorldMain.class))
15+
.setApplicationName("run-exit")
16+
.setApplicationVersion("0.1-SNAPSHOT")
17+
.setExpectExit(true)
18+
.setRun(true);
19+
20+
@Test
21+
public void testRun() {
22+
Assertions.assertThat(config.getStartupConsoleOutput()).contains("Hi World");
23+
Assertions.assertThat(config.getExitCode()).isEqualTo(0);
24+
}
25+
26+
@QuarkusMain
27+
public static class HelloWorldMain extends HelloWorldSuper {
28+
29+
}
30+
31+
public static class HelloWorldSuperSuper {
32+
33+
protected void main(String[] args) {
34+
System.out.println("Hi World");
35+
}
36+
37+
protected void main() {
38+
System.out.println("Hello World");
39+
}
40+
}
41+
42+
public static class HelloWorldSuper extends HelloWorldSuperSuper {
43+
44+
protected void main2() {
45+
System.out.println("Hello");
46+
}
47+
}
48+
49+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package io.quarkus.commandmode.launch;
2+
3+
import org.assertj.core.api.Assertions;
4+
import org.junit.jupiter.api.Test;
5+
import org.junit.jupiter.api.extension.RegisterExtension;
6+
7+
import io.quarkus.runtime.annotations.QuarkusMain;
8+
import io.quarkus.test.QuarkusProdModeTest;
9+
10+
public class NonPublicStaticMainCommandModeTestCase {
11+
@RegisterExtension
12+
static final QuarkusProdModeTest config = new QuarkusProdModeTest()
13+
.withApplicationRoot((jar) -> jar
14+
.addClasses(HelloWorldMain.class))
15+
.setApplicationName("run-exit")
16+
.setApplicationVersion("0.1-SNAPSHOT")
17+
.setExpectExit(true)
18+
.setRun(true);
19+
20+
@Test
21+
public void testRun() {
22+
Assertions.assertThat(config.getStartupConsoleOutput()).contains("Hello World");
23+
Assertions.assertThat(config.getExitCode()).isEqualTo(0);
24+
}
25+
26+
@QuarkusMain
27+
public static class HelloWorldMain {
28+
29+
public static void main(String[] args) {
30+
System.out.println("Hello World");
31+
}
32+
}
33+
34+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package io.quarkus.commandmode.launch;
2+
3+
import static org.junit.jupiter.api.Assertions.fail;
4+
5+
import org.junit.jupiter.api.Test;
6+
import org.junit.jupiter.api.extension.RegisterExtension;
7+
8+
import io.quarkus.runtime.annotations.QuarkusMain;
9+
import io.quarkus.test.QuarkusProdModeTest;
10+
11+
public class PrivateStaticMainCommandModeTestCase {
12+
@RegisterExtension
13+
static final QuarkusProdModeTest config = new QuarkusProdModeTest()
14+
.withApplicationRoot((jar) -> jar
15+
.addClasses(HelloWorldMain.class))
16+
.setApplicationName("run-exit")
17+
.setApplicationVersion("0.1-SNAPSHOT")
18+
.setExpectedException(RuntimeException.class);
19+
20+
@Test
21+
public void shouldNeverRun() {
22+
fail();
23+
}
24+
25+
@QuarkusMain
26+
public static class HelloWorldMain {
27+
28+
private static void main(String[] args) {
29+
System.out.println("Hello World");
30+
}
31+
}
32+
33+
}

0 commit comments

Comments
 (0)