2015-07-10 55 views
4

由於標題說我無法使用maven將命令行參數傳遞給java編譯器,因此我使用maven-compiler-plugin來做到這一點,並相應地使用this(專門針對compilerArgs選項插件)我使用「最新的方式」來傳遞給編譯器的參數。不夠好說話,更多的代碼,這是我的插件Maven配置,我不知道我做錯了:無法使用maven傳遞java編譯器參數

<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>的說明必須設置爲真,我不知道我錯過了什麼......請給我一點幫助?

可能或不需要提及:我需要parameters參數here,因爲我想在運行時使用反射來獲取參數在我的方法中的名稱;在調用maven查看調試時,我使用了-X參數,並向我展示了它的「fork」調用,並且我無法隨時隨地訪問我傳遞的參數(也許我需要啓用該插件;但是我認爲In這種情況是自動啓用,因爲它不是任何配置文件的一部分,我不是一個專家,所以請糾正我,如果我錯了)。

編輯:我已經通過多種方式試圖與不我甚至試過「老辦法」 破折號做到這一點:

<compilerArguments> 
    <parameters /> 
</compilerArguments> 

和:

<compilerArgument>-parameters</compilerArgument> 

回答

5

PFFF傢伙忘記它,併爲打擾你不好意思:(

我的錯誤:我創建的代碼首先以前修改我的POM文件,並運行它使用MAVEN檢查實際上是否正在工作,之後我修改了我的pom以包含-parameters標誌,以在我的方法中顯示我的參數的名稱以查看它實際上在工作。該代碼已被編譯一次沒有的標誌被設置和該代碼從未修改後因此maven 「說」'以及這個文件沒有變化,我不需要重新編譯它,我只是使用'之前編譯好的'(通常是一件好事,它減少了編譯時間),但在這種情況下不會這樣,因爲-parameters標誌以一種「胖類」的方式編譯代碼因爲它包含了參數的名稱),但maven不知道這一點。 TT

解決方案執行MVN清潔或刪除編譯的類或deleate的/目標文件夾(在總結做什麼EVER是必要的,以確保文件被編譯再次

1

請注意,您必須在參數 之前寫下' - '字母。

下面你可以看到你的插件的配置和一些示例 編譯參數。

<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> 
+0

沒了,我已經試過已經和它沒有工作,我已經嘗試了很多變體,並沒有:( – Ordiel

+1

看看http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html你可以看到你必須使用依賴性解決方案讓它工作 – Coder55

+0

你能否詳細說一下如何做到這一點,請問 – Ordiel

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> 
+0

我也這麼認爲,但使用「本機」編譯器時我無法找到區別 – Ordiel

+0

您是否嘗試過編譯而不使用maven查看該選項是否有效? – Sekkuar

+0

是的,它確實有效 – Ordiel