[英]Unable to pass java compiler parameters using maven
正如标题所说,我无法使用maven将命令行参数传递给java编译器,我正在使用maven-compiler-plugin来执行此操作,因此对此 (特别是对于plull的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
参数,因为我想在运行时使用反射获取我的方法中的参数的名称; 我在调用maven时使用-X参数来查看调试,我向我展示了它所做的“fork”调用,而且我无法查询我传递的参数(也许我需要启用插件;但我认为In这个案例是自动启用的,因为它不是任何个人资料的一部分,我不是专家,所以如果我错了请纠正我)。
编辑:我已经尝试了几种方式,有没有破折号我甚至尝试过“老方法”来做:
<compilerArguments>
<parameters />
</compilerArguments>
和:
<compilerArgument>-parameters</compilerArgument>
PFFF伙计们忘了它,很抱歉打扰你:(
我的错误:我之前创建了代码以修改我的pom文件,并运行它使用MAVEN来检查实际是否正常工作, 之后我修改了我的pom以包含-parameters
标志来打印我的参数名称方法,看它实际上是在工作。 代码已经编译一次没有设置标志和代码没有修改,因此maven “说” '这个文件没有变化,我不需要重新编译它,我只是使用一个已经编译过'(这通常是一件好事,它减少了编译时间)但在这种情况下不是因为-parameters标志以一种“胖类”的方式编译代码(或者至少更重,因为它包括参数的名称)但是maven并不知道。 TT
解决方案执行mvn clean或删除已编译的类或删除/ target文件夹(总结为什么有必要确保文件再次编译 )
请注意,您必须在参数之前写一个' - '字母。
下面您可以看到插件的配置以及一些示例编译器参数。
<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>
从maven编译插件主页 :
Compiler Plugin用于编译项目的源代码。 从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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.