簡體   English   中英

maven-compiler-plugin:為增量構建添加額外的依賴

[英]maven-compiler-plugin: add extra dependency for incremental build

我想用一個帶有長多行字符串常量的類來構造一個 java 類文件。 (將字符串放入單獨的文件並從與類相同的 JAR 加載它的通常方法不是一種選擇。不會有 JAR,只有那個類文件。)最初,我使用的是多行字符串注釋處理器,它允許將字符串內容放在文檔注釋中:

/**
 * This will be the actual
 * content of the string
**/
@Multiline static final String foo = "this literal is ignored";

在這里我誤以為:“哦,注釋不方便,為什么不改變multiline-string從外部文件加載內容?” 事實證明這是可行的,但是 maven(我用於構建)當然不明白如果注釋處理器讀取的文件發生更改,則需要重新編譯類文件。

方法:

  • useIncrementalCompilation設置為false :根本不做我期望的事情,而是禁用增量構建的依賴項檢查
  • .py添加到fileExtensions (沒想到會起作用)
  • 添加maven-clean-plugin作為初始化階段的一部分:這可行,但有點矯枉過正……

我真正想做的是將嵌入文件的路徑添加到 maven 的“如果此文件更改,重新編譯該文件”列表中。 這是可能的,還是有另一種優雅的方法來解決這個問題?

也許這不是一個完整的答案,而只是我對上述問題的看法:

Java 中的注解處理器通常不用於更改現有類。

是的,有 Lombok,這打破了這個假設,但代價是使用一些內部編譯器內部 API 並“手動”編譯修改后的 AST:

例如,這也寫在本教程中。

通常注釋處理器可以創建一些描述符,比如 JSON 或文件,或者新的 Java 源,但它們永遠不會(同樣除了 lombok 之外)修改現有的源。

如果我對您的理解正確,您會像在第 一個鏈接中提供的那樣為多行處理編寫自己的注釋處理器,但是這種與注釋處理器的想法不兼容,所以我懷疑 maven 可以提供幫助你在這里。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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