在POM中使用--enable-preview执行Maven插件

7

我有一个自定义的Maven插件,它使用JDK 12的预览功能。我编译插件时设置了--enable-preview作为编译器参数,即:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <compilerArgs>
            <compilerArg>--enable-preview</compilerArg>
        </compilerArgs>
    </configuration>
</plugin>

当我想要执行插件时,我需要在POM文件中像以下这样添加插件:
<plugin>
    <groupId>my.group</groupId>
    <artifactId>my-plugin</artifactId>
    <executions>
        <execution>
            <phase>generate-sources</phase>
            <goals>
                <goal>my-goal</goal>
            </goals>
        </execution>
    </executions>
</plugin>

但是这个出现了问题:
Preview features are not enabled for MyPluginMojo. Try running with '--enable-preview'

我该如何在插件执行中启用预览功能?


简单的回答是你不能这样做...因为插件是在使用给定的 JDK 的构建上下文中执行的...我不知道为什么你要在插件中使用 JDK 的预览功能?从我的角度来看,这没有意义...除此之外,这意味着你不能通过使用已实现的插件在早期的 JDK 版本上运行你的构建...? - khmarbaise
1
我只是想开始使用新的switch语句;如果在插件执行中无法启用预览功能,那我就不会使用它们!谢谢! - Giovanni Lovato
请参见Maven编译JDK12预览功能 - Gerold Broser
3个回答

5

对于我而言,我需要在我的构建目录中添加一个配置文件:

.mvn/jvm.config

包含:

--enable-preview

这将确保Maven向JVM传递正确的参数。

我已经添加了这个文件,但仍然出现错误。有什么帮助吗?“错误:记录是预览功能,默认情况下被禁用。” - renanleandrof

3
你在pom文件中犯了一个错误。 <compilerArgs> 需要嵌套 <arg>,像这样:
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>17</source>
                <target>17</target>
                <compilerArgs>
                    <arg>--enable-preview</arg>
                 </compilerArgs>
            </configuration>
        </plugin>

0

对于JDK 17,这对我有效:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <configuration>
    <source>17</source>
    <target>17</target>
    <compilerArgs>--enable-preview</compilerArgs>
  </configuration>
</plugin>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接