2016-11-28 31 views
0

我試圖從遠程服務器獲取代碼覆蓋率數據的屬性,所以我加了JVM參數:如何對外公開jacoco javaagent

-javaagent:/opt/jacocoagent.jar=output= tcpserver,port = 6300,includes =「一個很長的列表」

但不幸的是,包含列表太長,java命令已超出我們系統限制的最大長度。

有沒有什麼辦法可以指定一個外部屬性文件,所以我可以把長「包括列表」呢?

我讀過jacoco文件,它在‘脫機儀表’運行時看來,jacoco如果它出現在類路徑劑將從jacoco-agent.properties讀取性能。但我不希望使用此模式。

回答

0

找到了解決自己。 當Oracle JVM啓動時,它選擇一個環境變量JAVA_TOOL_OPTIONS

JNI_CreateJavaVM函數(位於JNI調用API中)會將環境變量的值 預先配置爲其參數 JavaVMInitArgs參數中提供的選項。

在我的情況

所以,我定義爲: JAVA_TOOL_OPTIONS = -javaagent:/path/to/jacocoagent.jar=output=tcpserver,address = *,端口= 6300,包含=」 一個相當長的名單

有關詳細信息,你可以參考一下: https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/envvars002.html

+0

您的權利 - JaCoCo不提供方式通過文件傳遞的屬性,當你使用代理,而不是‘離線模式’。但正如http://www.eclemma.org/jacoco/trunk/doc/agent.html所述:「除了性能優化或技術角落案例,通常不需要此選項。」請注意,此選項不會影響生成單獨排除的報告。所以想知道 - 這個大名單的原因是什麼?爲什麼不能通過使用包裝模式來減少?或者倒序列表 - 排除,會更短? – Godin

+0

嗨戈丁 - 我們的項目依賴項中的一些類不能被插裝,它們將導致服務器啓動錯誤 –

+0

而無法工具的原因是什麼?並且仍然想知道爲什麼列表很長 - 如果這涉及到依賴關係而不是代碼,那麼您應該能夠一次性包含/排除所有內容(使用帶*通配符的模式),因爲您的代碼和依賴項使用不同的包。 – Godin