[英]Maven: How to specify Javac plugin argument with maven-compiler-plugin?
Javac提供以下非標准選項(來自“javac -X”命令行幫助):
-Xplugin:"name args" Name and optional arguments for a plug-in to be run
但是,Maven不處理這種格式。 例如,以下內容不起作用:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<compilerArgs>
<arg>-Xplugin:"Manifold static"</arg>
</compilerArgs>
</configuration>
</plugin>
我嘗試了幾種不同的變化,並嘗試用'='替換空格,仍然沒有bueno。 有解決方法嗎?
注意我正在使用帶有Java 8的Manifold javac插件。再現很簡單..創建一個依賴於流形的pom-jar:
<dependency>
<groupId>systems.manifold</groupId>
<artifactId>manifold-all</artifactId>
<version>0.9-alpha</version>
</dependency>
你真的不需要任何來源,這只是為了證明Maven不會接受-Xplugin:"Manifold static"
javac參數。
另請注意,Java 9似乎已將-Xplugin
的格式-Xplugin
為不再需要引號。 請參閱Java 9文檔 。
根據這個討論: MCOMPILER-178和這個補丁: pull請求 ,因為一個空格似乎不是XML名稱中允許的字符,我懷疑你必須刪除所有的雙引號,並且保留所有空間。
這里:
myOption=foo"bar"baz
是bash
字符串連接(或者你正在使用的任何shell)。 它將字符串“foobarbaz”存儲在變量myOption
。 如果你在bash
中的一個選項中使用雙引號,那么它只是意味着:“bash,請將引號之間的整個事物視為單個參數,不要將其拆分為字符串參數數組”。 例如,如果您運行以下bash腳本:
#!/bin/bash
echo $1
echo $2
echo $3
有了這些論點:
$ ./testArgs.sh hello -World:"blah blah blah" foobar
你會得到這個輸出:
hello
-World:blah blah blah
foobar
-World:blah blah blah
part是單個字符串,引號不保留。
Maven不是bash。 POM是一個XML文件,它有標簽,有些標簽用文字填充。 XML並不關心字符串連接或參數解析的bash語法。 如果我正確理解了上述討論,他們會將xml-tags的內容直接傳遞給編譯器,而不做任何修改。
因此,我最好的猜測是刪除雙引號:
<arg>-Xplugin:MyPlugin myArg</arg>
如果這沒有幫助,那么我完全誤解了上面討論的討論,或者你使用的maven版本的工作方式不同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.