2017-04-12 48 views
1

javac命令可與一個文件通過指定命令行該文件被配置成與@傳遞一個選項/參數文件來Maven的編譯器插件

javac @compileargs 

我想使用的Maven該語法,所以我可以在這樣的文件中收集部分命令行參數,而不是Maven的pom.xml

Maven的編譯器插件does not seem to have對於一個特定的標籤,所以我嘗試compilerArgs

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.6.1</version> 
    <configuration> 
     <compilerArgs> 
      <arg>@compile-args</arg> 
     </compilerArgs> 
     <fork>true</fork> 
    </configuration> 
</plugin> 

但隨後javac抱怨:

javac: invalid flag: @compile-args 
Usage: javac <options> <source files> 
use --help for a list of possible options 

如果我得到實際的命令Maven是執行(以-X),並稱這是我的工作,但。

我最近有一個spaces in compiler options類似的問題,所以我假設一個類似的過程是在這裏搞砸了我。

+0

您是否試過[compilerArgument](https://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html#compilerArgument)?他們可能已經在內部使用@語法來創建''標籤的臨時參數文件,所以你的'@ compile-args'最終會作爲該文件中的一個選項 –

+0

這是什麼樣的問題,這就是爲什麼你喜歡參數在外部文件中,而不是在POM文件中?此外使用參數應該通過使用[compilerArgs](https://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html#compilerArgs) – khmarbaise

+1

@AndreasFester:你讓我希望但'compilerArgument'導致相同的行爲。 @khmarbaise:我想在選項文件中收集像'--add-modules'這樣的模塊系統轉義碼,以便它們可以被重用來啓動應用程序,而不必保持'pom'和啓動腳本同步。 – Nicolai

回答

3

背景信息:maven編譯器依賴於plexus compiler

如果構建過程被分叉,它將採用所有指定的參數並自行創建臨時配置文件(請參閱the code)。該參數文件還將包括用戶定義的參數文件,但documentation指出:at符號(@)遞歸解析文件

使用的是不支持的。

這意味着從Maven引用選項文件是不可能的。

相關問題