2

大量のMaven依存関係を分析するためのDSL/ドメイン設計について考えています。

入力はpomのリスト(事実上pomと物理的な場所の間のマップ)であり、次のようないくつかの素晴らしい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)
)

次に、その「ノード」には3つの構造があります

  1. 継承:<親>および<モジュール>による
  2. 依存関係:<依存関係>による
  3. 物理:ファイルシステム/svndir-レイアウト

質問:これらはどのように設計する必要がありますか?

私の心のいくつかの可能性:

  1. 依存関係のリストを変更可能にするなどして、モジュール自体に構造を課し、そのタイプをList(Either(Artifact、Module))に変更します。
  2. コレクションAPIを再利用し、継承ツリーをTree(Module)にマップします。しかし、依存関係グラフはどうでしょうか?
  3. 完全に新しい構造を設計し、pomのリストをこれにマッピングします
  4. その他?..。

もちろん、繰り返しの計算を避けるために、データ構造にはできるだけ多くの情報を入れたいと思います。概要は次のとおりです。

  1. フラットファイルのリストを解析する
  2. 構造を強化する(構造の更新(可変)または別の構造へのマッピング(不変/機能)のいずれかによって)。
  3. クエリリッチ構造。

これでやりたいこと:

  • 入ってくる依存関係を見つける
  • 「クラスター」を見つける
  • n年生の関係を見つける
  • リファクタリングのヒントを与える(プルアップ依存関係、マージモジュール)
  • pom.xmlをhtmlとしてレンダリングし、関連するアーティファクトを参照します。( http://jarvana.comと同様)

洞察をありがとう...

4

1 に答える 1

0

記録のために、不変のコレクション(trees and scalax.graph http://www.assembla.com/spaces/scala-graph/wiki)に基づいて新しい構造をインスタンス化します。

pomを参照するために、それらをxhtmlにレンダリングし、おそらくplay-frameworkに基づいて、依存関係/継承のリンクを挿入します。

そして、このプロジェクトが何か役に立つものを生み出すなら、私はそれをここに投稿します...

于 2012-05-04T08:00:05.137 に答える