无法使用maven

时间:2015-07-10 15:59:15

标签: java maven plugins

正如标题所说我无法使用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>

3 个答案:

答案 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.JavaCompilerjavac选项-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>