0
我有以下的示例的源代碼來構建例如,A = Oracle,B = MySQL)。爲了進行通信,其方法被支撐在該環境中,我已經添加@Support
註解與以下語義:使用Maven預處理源代碼,以與Maven
- 否
@Support
註釋表示相應的方法不依賴於環境 - 一個「空」
@Support
註解意味着所有環境都支持相應的方法 - 參數化的
@Support
註釋意味着相應的方法僅在作爲註釋參數提供的環境中受支持。
爲了改善與API客戶端的通信,我想編寫一個可用於API預處理的Maven插件。該插件會將環境列表作爲參數來棄用所有提供的環境中不支持的所有方法。
一些例子:
- 我
ENVIRONMENT_A
運行插件:在接口上沒有影響。所有方法在ENVIRONMENT_A
支持我
ENVIRONMENT_B
運行插件:生成的接口應該是這樣的public interface SomeInterface { void method1(); @Support void method2(); /* @deprecated - Not supported in ENVIRONMENT_B */ @Support(ENVIRONMENT_A) @Deprecated void method3(); @Support({ ENVIRONMENT_A, ENVIRONMENT_B }) void method4(); }
我跑既
ENVIRONMENT_A
和ENVIRONMENT_B
插件:public interface SomeInterface { void method1(); @Support void method2(); /* @deprecated - Not supported in both ENVIRONMENT_A *AND* ENVIRONMENT_B */ @Support(ENVIRONMENT_A) @Deprecated void method3(); @Support({ ENVIRONMENT_A, ENVIRONMENT_B }) void method4(); }
換句話說,該插件應根據上述規則轉換src/main/java中的所有源,之前編譯src/main/java中的源代碼。原始來源應保持不變,以便隨時可重複使用。這可能嗎?
[預處理源代碼作爲maven構建的一部分]的可能重複(http://stackoverflow.com/questions/187550/preprocessing-source-code-as-a-part-of-a-maven -build) – 2012-07-05 16:44:14
...好吧,爲什麼我不只是谷歌...? http://stackoverflow.com/questions/187550/preprocessing-source-code-as-a-part-of-a-maven-build – 2012-07-05 16:44:32