6

私はJavaでmavenを使用しており、PHP Mavenを使い始めました。最近、作曲家に切り替えました。

私のプロジェクトは Zend Framework 2 を使用しており、チームはアプリケーション コードのみをチェックし、ベンダー ディレクトリには何もチェックしません。これは、競合を回避し、ライブラリを SVN の下に置かないようにするために行われます。

現在、開発者が新しい環境を設定するたびに、コンポーザーがインターネットから依存関係を取得していることがわかります。これにはかなりの時間がかかります。

これを高速化するためのより良いアイデア/アプローチ、またはこの問題を回避するための別の方法でプロジェクトを処理する方法はありますか?

maven は、ダウンロードをキャッシュしてネットワークで再び使用できる maven プロキシ サーバーを使用していますが、このような問題を処理するソリューションはありますか?

4

2 に答える 2

2

Composerは非常に若いプロジェクトであるため、Mavenが手間をかけずに共同作業できるものが不足している可能性があります。

コンポーザーのドキュメントで説明されているように、独自のPackagistサーバーをセットアップできます。packagistには、packagistサーバーにパッケージを保存するために使用できるいくつかのキャッシュオプションがあると思います。

また、依存関係をフォークして、会社所有のプライベートリポジトリにプッシュすることもできます。composer.jsonでは、この依存関係のみを使用するようになり、クローン作成が高速になります。もちろん、これにはすべての異なる依存関係を維持する必要があります(ただし、これはスクリプトとcronジョブを使用して実行でき、githubリポジトリからデータをプルして、所有する会社にプッシュします)。

また、composerにはいくつかのプロキシオプションがあると思いますが、これらは依存関係をキャッシュするためのものではないと思います。

最後のオプションは、作曲家/パッケージ奏者の一部として、またはスタンドアロンとして、このようなものを開発することです。

于 2012-12-31T07:56:44.243 に答える
1

PHP には、レポのようなコンポーザーをローカルで実行するための既存のオプションがあり、Satis と呼ばれます (実際には Composer によって提供されます): https://github.com/composer/satis

したがって、サーバー上でローカルに実行し、コンポーザーがそれをデフォルトのコンポーザー リポジトリとして使用するように指定できます。Satis は、インストールされているすべてのパッケージとさまざまなバージョンが ZIP ファイルとしてディスクにキャッシュされていることを確認します。インターネット。

次のようなことができます。

{
    "repositories": [ 
        { 
            "type": "composer", 
            "url": "http://satis.example.org/" 
        }
    ],
    "require": {
        "company/package": "1.2.0",
        "company/package2": "1.5.2",
        "company/package3": "dev-master"
    }
}

これにより、GitHub で公開せずにプライベート パッケージとライブラリを使用することもできます。

もう 1 つの大きな利点は、何らかの理由で GitHub がダウンした場合でも、すべての依存関係がローカルにキャッシュされるため、引き続きデプロイできることです。これは、存在しない新しいパッケージをリリースに追加していないことを前提としています。

于 2016-05-04T10:23:18.007 に答える