2
我正在考慮一個DSL /域設計來分析一大堆maven依賴關係。爲maven-poms設計一個Scala DSL
輸入是勁歌列表(有效勁歌和物理位置之間的映射),我認爲這會被解析爲「平」(即非遞歸)文件到一些不錯的Scala類型是這樣的:
class Artifact(
val groupId : String,
val artifactId : String,
val version : String
)
class Module(
val id : Artifact,
val location : URI, // any good type for this ?
val parent : Option(Artifact),
val modules : List(Artifact),
val dependencies : List(Artifact)
)
再就是對 「節點」
- 繼承三種結構:由<父>和<模塊>
- 依賴關係:由<依賴>
- 物理:文件系統/ SVN DIR-佈局
問題:如何看待這些設計?
在我腦海裏的一些可能性:
- 模塊上他們的自我,例如拼版結構通過使依賴項列表可變,並將其類型更改爲List(任一(工件,模塊))。
- 重用集合API,並將繼承樹映射到樹(模塊)。但是什麼與依賴圖?
- 設計全新結構並將poms列表映射到此
- 其他? ...
當然,我想在數據結構中儘可能多地提供信息以避免重複計算。輪廓是:
- 的平面文件解析列表
- 富集結構(無論是由結構更新(可變)或映射到不同的結構(不可變的/功能性的)
- 查詢豐富結構
事情我想這個做:
- 找到來電的依賴
- 發現「集羣」第n級的
- 找關係
- 給重構提示(上拉的依賴關係,合併模塊)
- 渲染的pom.xml爲html,瀏覽到相關的工件。 (類似http://jarvana.com)
感謝您的任何見解...
你有沒有深入瞭解maven-indexer?什麼是分析依賴關係的意圖?以何種方式? – khmarbaise 2012-04-27 08:21:32
@khmarbaise:不,現在我已經找到了很多我不感興趣的東西,例如重新實現「TreeNode」肯定不是我會走的路(包括使用這樣的框架)。我想要一些小巧,簡潔和可管理的東西。此外這也是scala和play的一個案例研究。最後,我們的目標是清理我們的300多個模塊:-),但之前需要進行良好的分析。 – Bastl 2012-04-27 08:39:58
你想清理什麼?像未使用的依賴關係?當然如何? – khmarbaise 2012-04-27 08:51:13