【问题标题】:Unable to pass java compiler parameters using maven无法使用maven传递java编译器参数
【发布时间】:2015-07-10 15:59:14
【问题描述】:

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

我正在按照该工具的使用说明进行操作,该说明说必须将 &lt;fork&gt; 设置为 true,但我不知道我错过了什么……请提供一点帮助?

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

编辑:我已经尝试了几种使用和不使用破折号的方法我什至尝试过“旧方法”来做到这一点:

<compilerArguments>
  <parameters />
</compilerArguments>

还有:

<compilerArgument>-parameters</compilerArgument>

【问题讨论】:

    标签: java maven plugins


    【解决方案1】:

    PFFF 伙计们忘了它,很抱歉打扰你:(

    我的错误:我首先创建了代码来修改我的 pom 文件,然后运行它使用 MAVEN 来检查它是否真的在工作,之后 我修改了我的 pom 以包含 -parameters 标志以在我的方法中打印我的参数名称,以查看它是否确实有效。代码已经编译过一次没有设置了标志并且代码在之后从未修改过因此maven “说”'好吧没有更改此文件,我不需要重新编译它,我只使用之前已经编译的那个(这通常是一件好事,它减少了编译时间)但在这种情况下不是因为 -parameters 标志编译代码的方式是“胖类”(或者至少更重,因为它包含参数的名称),但 maven 不知道这一点。 T.T

    解决方案执行 mvn clean 或删除已编译的类或删除 /target 文件夹(总而言之 做任何必要的事情以确保再次编译文件

    【讨论】:

      【解决方案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>
      

      【讨论】:

      • 不,我已经尝试过了,但它没有用,我尝试了很多变体,但没有:(
      • 看看maven.apache.org/plugins/maven-compiler-plugin/…,你可以看到你必须使用依赖解析来让它工作
      • 你能详细说明一下如何做到这一点
      • 因为我看到的是“自动附加”到编译阶段(我显然正在执行)
      【解决方案3】:

      来自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>
      

      【讨论】:

      猜你喜欢
      • 2012-03-14
      • 2015-03-14
      • 1970-01-01
      • 2015-10-29
      • 2021-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-14
      相关资源
      最近更新 更多