无法使用 maven 传递 java 编译器参数

2022-09-04 20:37:43

正如标题所说,我无法使用maven将命令行参数传递给java编译器,我正在使用maven-compiler-plugin来做到这一点,因此(特别是对于插件的编译器Args选项),我正在使用“最新方法”来说明传递给编译器的参数。好吧,谈话足够多,代码更多,这是我为插件配置的maven配置,我不确定我做错了什么:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.3</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <fork>true</fork>
                <compilerArgs>
                    <arg>-parameters</arg>
                </compilerArgs>
            </configuration>
        </plugin>
    </plugins>
</build>

我正在按照该工具的使用说明进行操作,该工具说必须将其设置为true,我不知道我错过了什么...请帮忙一点?<fork>

提到这一点可能会或可能不会有所帮助:我需要这里指定的参数,因为我想在运行时使用反射获取我的方法中的参数名称;我在调用maven时使用-X参数来查看调试,并向我展示了它所做的“fork”调用,我无法在任何地方使用我正在传递的参数(也许我需要启用插件;但我认为在这种情况下会自动启用,因为它不是任何配置文件的一部分, 我不是专家,所以如果我错了,请纠正我)。parameters

编辑:我已经尝试了几种方式,有和没有破折号,我甚至尝试了“旧方法”来做到这一点:

<compilerArguments>
  <parameters />
</compilerArguments>

和:

<compilerArgument>-parameters</compilerArgument>

答案 1

我的错误:我在修改我的pom文件之前创建了代码,并使用maven运行它来检查它是否实际有效。之后,我修改了我的pom以包含旗帜。代码已经在没有该标志的情况下编译,之后没有修改。因此,maven 没有看到代码中的更改,也没有重新编译文件。-parameters

SOLUTION 执行 、删除已编译的类、删除文件夹或确保重新编译文件所需的任何内容。mvn cleantarget


答案 2

请提一下,您始终必须在参数前写一个“-”字母。

您可以在下面看到插件的配置,其中包含一些示例编译器参数。

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.3</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <fork>true</fork>
                <compilerArgs>
                    <arg>-verbose</arg>
                    <arg>-Xlint:all,-options,-path</arg>
                </compilerArgs>
            </configuration>
        </plugin>
    </plugins>
</build>

推荐