簡體   English   中英

Maven:如何使用maven-compiler-plugin指定Javac插件參數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM