Ответ 1
Шаг 1: Можно использовать следующие конфигурации maven для компиляции кода, используя --enable-preview
вместе с аргументом --release 12
.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<release>12</release>
<compilerArgs>--enable-preview</compilerArgs>
</configuration>
</plugin>
<!-- This is just to make sure the class is set as main class to execute from the jar-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.stackoverflow.nullpointer.expression.SwitchExpressions</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Примечание: - Я также должен был убедиться в том, что в моем MacOS мой файл ~/.mavenrc
был настроен для отметки java 12 в качестве java по умолчанию, настроенного для maven.
Шаг 2. Выполните команду maven, чтобы собрать jar из классов модулей.
mvn clean verify
Шаг 3. Используйте командную строку для выполнения основного класса фляги, созданной на предыдущем шаге, как:
java --enable-preview -jar target/jdk12-updates-1.0.0-SNAPSHOT.jar #the last argument being the path to my jar
Это производит вывод, как и ожидалось, как: