7

https://github.com/Panmind/erlang-ruby-marshalのように、アプリケーションでいくつかのライブラリを使用したいと考えています。そのリポジトリには src dir がありますが、(アプリケーションではないため) .app ファイルがないため、get-deps を使用できません。

libs dir を sub_dirs に追加し、リポジトリを git サブモジュールとして追加するという別のアプローチを試みましたが、rebar はそのファイルをコンパイルしません。rebar は otp アプリケーションのみをコンパイルすると思いますが、アプリケーションに関連付けられていない .erl ファイルだけではありません。

この種の依存関係をどのように管理していますか? ファイルがそこに属しているとは思わないため、ファイルをアプリディレクトリにコピーすることは避けたいと思います。また、使用しているライブラリのバージョンを追跡できるgitサブモジュールアプローチが好きです。

4

4 に答える 4

3

最近の rebar はraw、依存関係のオプションをサポートしています。このオプションが特定の場合、rebar は、"src/dependency_name.app.src" または "ebin/dependency_name.app" ファイルのいずれかの存在を前提とする標準の Erlang/OTP レイアウトを持つ依存関係を必要としません (詳細はこちらを参照) 。 .

例えば:

{deps, [
  {erlang_ruby_marshal, "",
    {git, "https://github.com/Panmind/erlang-ruby-marshal", {branch, master}},
    [raw]}
]}.

rebar はそれを取得できるようになりましたが、まだコンパイルされていないことに注意してください。他のコメンターが指摘したように、この依存関係にファイルを持たない理由はありません.app。リポジトリをフォークして、.appファイルを追加します。

于 2011-11-25T18:01:22.503 に答える
2

この記事では、rebarを使用してアプリケーションとリリースを作成するというより大きなプロセスについて説明します。

より具体的には、このオプションはrebar.configあなたが探しているものかもしれないと思います。私がこれまでに見つけた唯一の方法は、アプリケーションごとに1つのエントリを持つことです。

{sub_dirs, ["libs/app1",
            "libs/app2",
            ...]}.

これにはもう少し手作業が必要です。残念ながら、rebarは1つのアプリのみの概念に基づいて非常に構造化されており、単一のアプリケーションではなく、同等の価値のあるアプリケーションが多数あるリポジトリを管理するためのより良いサポートが必要になります。

于 2011-04-01T09:35:20.477 に答える
1

Linuxを使用している場合は、必要なモジュールをハードリンクとしてアプリケーションのsrcディレクトリに追加できます。

これは最適とはほど遠いですが、これを行うためのより良い方法をまだ見つけていません。

于 2011-11-25T10:11:34.247 に答える
0

Agnerの人たちに、パッケージ管理システムに追加するように依頼してください。その過程で、彼らはフォークを作成し、プロジェクトの鉄筋と互換性を持たせるために変換します。また、元のメンテナはおそらく変更を統合します。

于 2011-04-02T22:44:44.233 に答える