2009-10-02 9 views
6

questa è una domanda su PHP principalmente. Mi chiedevo: in che modo ti assicuri che tutte le librerie necessarie siano incluse nella tua applicazione quando esegui una distribuzione sui server (di produzione)?Come gestite le dipendenze della libreria durante la distribuzione usando PHP?

Un esempio più concreto: ho un'app in esecuzione su Zend Framework e ogni volta che faccio scorrere l'applicazione su un server il processo di distribuzione crea una nuova "installazione" su quel sistema. Pertanto, ho bisogno di unire Zend Framework insieme alla mia applicazione e quindi copiare i file nei posti giusti insieme (è fatto automaticamente). Attualmente, sto usando una definizione di svn: externals per ottenere i file dal sistema SVN di Zend durante l'implementazione, tuttavia, non voglio fare affidamento su tale SVN e inoltre non voglio mettere traffico su SVN esterni con ogni distribuzione .

Nel mondo Java, sono abituato a Maven che gestisce tali cose utilizzando i repository di artefatto centrale. So che esiste una versione di Maven4PHP, tuttavia, sono più alla ricerca di una soluzione basata su PHP. Inoltre, non credo che il PEAR sia un buon modo per andare visto che in realtà non soddisfa la mia esigenza di raggruppare l'applicazione (comprese le librerie) in un singolo deployable.

Esiste già qualche strumento che non conosco? O hai qualche grande tecnica che dovrei sapere?

Grazie mille per il vostro aiuto!

Michael

risposta

3

C'è un sistema di compilazione chiamato Phing che è scritto in PHP e basato su Apache Ant.

Personalmente posso benissimo vivere con gli esterni.

+1

Sì, lo so Phing! Esiste un'attività pronta per risolvere le dipendenze? O si tratta di scrivere il mio compito? Grazie! –

+0

@ Michaelico gestisco le dipendenze con phing con un approccio più semplice. Potrebbe non essere così robusto come probabilmente dovrebbe essere un compito di dipendenza, ma ho una serie di helper di phing che sono semplici script di build progettati per l'inclusione con l'attività di importazione, nel mio helper di progetto definisce un'attività risolutiva che è un foreach che esegue un'attività di phing su uno script di build esterno con proprietà assegnate che definiscono la dipendenza. –

0

Non è ancora pronta la produzione, ma è possibile tenere d'occhio il progetto Phark. È una porta di Bundler in PHP.

Mentre guardavo attraverso le diapositive Simplify your external dependency management mi sono imbattuto in uno strumento chiamato pantr che può essere usato come programma di installazione PEAR. pantr as PEAR installer che consente di specificare le dipendenze in un file specifico del progetto.

L'articolo Version Control != Dependency Management ha alcune informazioni sull'utilizzo del nuovo programma di installazione PEAR chiamato Pyrus

3

penso che il vendor branching risolverebbe il problema dal vostro esempio abbastanza semplice, ma se anche non vi piace grandi repository che avevo raccomandato per continuare a guardare i giocattoli moderni come composer e what it solve (e forse phark, non ho mai sentito prima :))

+0

+1 per aver menzionato il compositore, questa è una vecchia domanda, a mio avviso, ma ormai la maggioranza assoluta dei progetti PHP utilizza Composer per la gestione delle dipendenze. –

Problemi correlati