È possibile utilizzare Apache/IVY in modalità standalone.
http://ant.apache.org/ivy/history/latest-milestone/standalone.html
ho bisogno di sottolineare "stand alone". Se cerchi google per gli esempi .... troverai molti (non autonomi).
Fondamentalmente, IVY funziona su questa premessa.
Si pubblicano binari (o qualsiasi tipo di file, ma dirò i binari da questo punto in poi) ..... come piccoli pacchetti binari.
Di seguito è il codice PSEUDO, non fare affidamento sulla mia memoria.
java.exe ivy.jar -publish MyBinaryPackageOne.xml --revision 1.2.3.4
(< < dove il XML si riferisce al numero N di file che costituiscono l'unico pacchetto.))
"pacchetto" significa semplicemente un gruppo di file. È possibile includere file .dll e .xml e .pdb in un pacchetto (cosa faccio con una build di assiemi DotNet). O qualsiasi altra cosa IVY è agnostico di tipo file. Se vuoi mettere WordDocs lassù, potresti farlo, ma sharepoint è meglio per i documenti.
Come si apportano correzioni di errori al codice, si incrementa la revisione.
java.exe ivy.jar -publish MyBinaryPackageOne.xml --revision 1.2.3.5
poi è possibile recuperare dal IVY ciò che si desidera.
java.exe ivy.jar -retrieve PackagesINeed.xml
PackagesINeed.xml conterrà informazioni sui pacchetti desiderati.
qualcosa come "Voglio la versione '1.2+ del MyBinaryPackageOne" (definito in XML)
come costruire la vostra binari quadro ... si pubblica IVY. Quindi, mentre sviluppi e costruisci il tuo codice ... ti riprendi da Ivy.
In un NUTSHELL, IVY è un repository per FILE (non codice sorgente).
L'edera diventa quindi la fonte definitiva dei file binari.
Nessuno dei "Hey, Developer-Joe ha i binari di cui abbiamo bisogno" tipo di bull-pasticcio.
.......
Vantaggi: 1. non tenere i binari nel controllo del codice sorgente. (e quindi non BLOAT il controllo del codice sorgente). 2. Si dispone di UNA sorgente definitiva per i binari. 3. Tramite la configurazione xml, si indicano quali versioni sono necessarie per una libreria. (nell'esempio sopra, se la versione 2 (2.0.0.0) di MyBinaryPackageOne è pubblicata su IVY (assumiamo con interruzione delle modifiche da 1.2.xy) ... allora sei OK, perché hai definito nel tuo richiamo (file di configurazione xml) .. che vuoi solo "1.2+", quindi il tuo progetto ignorerà qualsiasi cosa 2 + ... a meno che tu non modifichi il pacchetto di configurazione
Avanzato: Se hai una macchina di compilazione (ad esempio CruiseControl.NET) .... è possibile scrivere la logica per pubblicare i binari (di nuova costruzione) su IVY dopo ogni generazione. (che è quello che faccio).
Io uso la revisione SVN come l'ultimo numero nel numero di build. Se la mia revisione SVN è stato "3333", quindi vorrei correre qualcosa di simile:
java.exe ivy.jar -publish MyBinaryPackageOne.xml --revision 1.2.3.3333
Così ogni volta che recuperare il pacchetto di revisione "1.2.3+" .... vado a prendere l'ultimo costruire. In questo caso, otterrei la versione 1.2.3.3333 del pacchetto.
È triste che IVY sia stato avviato nel 2005 (beh, questa è una buona notizia) ... ma quel NUGET non è uscito fino al 2010? (2011?) Microsoft aveva 5-6 anni di ritardo su questo, IMHO.
Non tornerei mai a mettere i binari nel controllo del codice sorgente.
IVY è molto buono. È ora dimostrato. Risolve il problema della gestione della DIPENDENZA.
Ci vuole un po 'di tempo per sentirsi a proprio agio? Sì.
Ma ne vale la pena alla fine.
I miei 2 centesimi.
.................
Ma l'idea # 2 è Imparare ad usare Nuget con un locale (come in..local per la vostra azienda) repository .
Questa è la stessa cosa di IVY.
Ma guardando NUGET, mi piace ancora l'IVY.
Le librerie condivise stanno cambiando spesso sin da ora, motivo per cui non possiamo usarle come estensioni esterne per trunk, perché potremmo cambiarle nel ramo. Quindi non possiamo usarli come riferimenti binari. – sontek
Se si aggiungono alle librerie condivise, inserire il nuovo codice nell'applicazione nel ramo, quindi spostarlo nelle librerie condivise solo quando necessario da una delle altre app. Esegui lo sviluppo dell'applicazione fino alla sua completa verifica, quindi esporla alle altre app solo quando necessario. Probabilmente non dovrebbe _change_ le librerie condivise diverse dalle correzioni di errori - la funzionalità/l'interfaccia di classi/metodi esistenti dovrebbe generalmente rimanere la stessa. Principio aperto/chiuso - aggiungere funzionalità, non modificare esistente. –
Queste librerie condivise sono il fulcro delle nostre applicazioni, se viene trovato un errore o una nuova funzionalità, deve essere modificata. Ad esempio, una di queste librerie condivise è costituita da alcuni controlli utente di asp.net utilizzati in entrambe le applicazioni, pertanto di recente ho rielaborato i controlli della carta di credito/pagamento per aggiungere funzionalità del piano di pagamento (i piani di pagamento sono una nuova esigenza aziendale). Ovviamente non volevo modificare i controlli di pagamento nel bagagliaio perché ciò avrebbe interferito con il lavoro di tutti gli altri. Quindi avevo bisogno di diramarmi finché non ho funzionato e poi unirli di nuovo nel bagagliaio. – sontek