正如标题所说我无法使用maven将命令行参数传递给java编译器,我使用maven-compiler-plugin来执行此操作,并相应地使用this(特别是对于compilerArgs选项)插件)我使用“最新方式”来表示传递给编译器的参数。足够的谈话,更多的代码,这是我的插件的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>
我按照使用该工具的说明说明<fork>
必须设置为true,我不知道我错过了什么...请帮助一下吗?
可能或者可能没有帮助提到:我需要parameters
参数指定here,因为我想在运行时使用反射获取我的方法中的参数名称;我在调用maven时使用-X参数来查看调试,我向我展示了它所做的“fork”调用,而且我无法查询我传递的参数(也许我需要启用插件;但我认为In这种情况是自动启用的,因为它不属于任何个人资料,我不是专家,所以如果我错了请纠正我。)
编辑:我曾尝试过多种方式,无论是否使用破折号,我都尝试过“旧方式”来执行此操作:
<compilerArguments>
<parameters />
</compilerArguments>
并且:
<compilerArgument>-parameters</compilerArgument>
答案 0 :(得分:5)
PFFF伙计们忘了它,很抱歉打扰你:(
我的错误:我之前创建了代码以修改我的pom文件,然后运行使用MAVEN 来检查实际是否正常工作,之后我修改了我的pom以包含-parameters
标志,以便在我的方法中打印我的参数名称,以确定它实际上是在工作。代码已编译一次没有标志设置和代码未经修改因此maven “说”'好吧没有对这个文件的更改,我不需要重新编译它,我只会使用之前编译的那个'(这通常是一件好事,它减少了编译时间)但是在这种情况下不是因为-parameters标志编译代码的方式是“胖类”(或至少更重,因为它包含参数的名称),但maven不知道这一点。 T.T
解决方案执行mvn clean或删除已编译的类或删除/ target文件夹(总结做什么,以确保文件再次编译)
答案 1 :(得分:1)
请注意,你总是要写一个&#39; - &#39;之前的信 参数。
下面您可以看到包含一些示例的插件配置 编译器参数。
<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>
答案 2 :(得分:0)
来自maven compile plugin main page:
编译器插件用于编译项目的源代码。从3.0开始,默认编译器是javax.tools.JavaCompiler(如果您使用的是java 1.6)并且用于编译Java源代码。如果要使用javac强制插件,则必须配置插件选项forceJavacCompilerUse。
我猜测javax.tools.JavaCompiler
与javac
选项-parameters
的工作方式不同。
尝试强制javac
使用
<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>
<forceJavacCompilerUse>true</forceJavacCompilerUse>
<fork>true</fork>
<compilerArgs>
<arg>-parameters</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>