2012-07-13 17 views
7

Ho letto la documentazione di Ivy e ho una domanda sul valore predefinito ivysettings.xml trovato all'interno di ivy.jar.ivysettings.xml: Posso "modificare" le impostazioni predefinite senza modificare il barattolo o sostituirle completamente?

Tutto quello che voglio fare è cambiare l'archivio pubblico in un repository Maven locale che abbiamo. Questo è tutto. Potrei copiare tutti i file ivysettings*.xml nel mio progetto e usare <ivy:settings> per puntare ad esso, ma questo duplica un sacco di cose. Potrei anche modificare lo ivy.jar, ma questo aggiunge mal di testa alla manutenzione. Gli sviluppatori devono usare il mio ivy.jar e, se andiamo a una nuova versione, dovrei modificarlo di nuovo.

Quindi, come mantenere tutte le impostazioni Ivy standard e semplicemente il repository da utilizzare? Voglio semplicemente sovrapporre le mie modifiche su ciò che Ivy ha già.


e altre due domande:

  • Qual è la differenza tra i file ivyconf*.xml ei file ivysettings*.xml? Perché ci sono configurazioni duplicate in Ivy?
  • Che cos'è un buon libro su Ivy? In questo momento sto usando Manning's Ant in Action che copre Ivy in un modo un po 'sommario ed è un po' datato. Le risorse sul sito Web di Ivy sono orribili.

risposta

1

Finalmente capito.

Ho copiato il file ivysettings.xml dal barattolo e ho apportato una leggera modifica. Si noti che il primo includere punti in un file XML di edera ${ivy.lib.dir} e non ${ivy.default.settings.dir}:

<ivysettings> 
<settings defaultResolver="default"/> 
    <include file="${ivy.lib.dir}/ivysettings-public.xml"/> 
    <include url="${ivy.default.settings.dir}/ivysettings-shared.xml"/> 
    <include url="${ivy.default.settings.dir}/ivysettings-local.xml"/> 
    <include url="${ivy.default.settings.dir}/ivysettings-main-chain.xml"/> 
    <include url="${ivy.default.settings.dir}/ivysettings-default-chain.xml"/> 
</ivysettings> 

ho il mio ivysettings-public.xml che è la stessa come predefinito, ma ora definisce un root al mio repository.(Sì, è localhost per ora, ma io impostarlo su un server vero e proprio una volta che ottengo tutto risolto):

<ivysettings> 
    <resolvers> 
     <ibiblio name="public" m2compatible="true" 
       root="http://localhost:8081/artifactory/repo" /> 
    </resolvers> 
</ivysettings> 

Ora, nel mio build.xml, ho il seguente:

<property name="ivy.lib.dir"  value="${basedir}/ivy.lib"/> 

<taskdef uri="ivylib:org.apache.ivy.ant" 
    resource="org/apache/ivy/ant/antlib.xml"> 
    <classpath> 
     <fileset dir="${ivy.lib.dir}"> 
      <include name="ivy.jar"/> 
      <include name="ivy-*.jar"/> 
     </fileset> 
    </classpath> 
</taskdef> 

<ivy:configure file="${ivy.lib.dir}/ivysettings.xml" override="true"/> 

Questo sembra fare il trucco.

+0

non dovresti copiare il solito ivysettings.xml. Si potrebbe fare che ho scritto nella mia risposta. E poi fai quello che devi fare. Devo dire però. Queste basi sono trattate negli esempi all'interno della src scaricabile apach-edy. –

6

Questo è il mio file ivysettings.xml

<ivysettings> 
    <include url="${ivy.default.settings.dir}/ivysettings.xml"/> 
    <resolvers> 
     <chain name="download-chain" changingPattern=".*" checkmodified="true" > 
      <ibiblio name="maven" m2compatible="true" /> 
     </chain> 
    </resolvers> 
</ivysettings> 

noti che scrivo i miei resolver in più qui, ma l'uso tutto il resto da quella standard, che è indicato nel URL. Questo caricherà le impostazioni da ivysettings.xml nel file ivy.jar.

Per quanto riguarda ivyconf * .xml. Penso che sia deprecato ora. Ivysettings è il nuovo modo di farlo.

Le risorse sono piuttosto orribili. Concordo pienamente con questo. Tuttavia, molte risposte nello stackoverflow.com sono state sufficientemente dettagliate e in realtà cercano di anticipare i problemi

Le risposte di Mark O'Connor sono particolarmente dettagliate e dritte al punto. Devi abbracciare il fatto che stai imparando qualcosa di nuovo, basta dargli il tempo.

+0

so che mi ci vorrà tempo per raccoglierlo, ma anche le basi sono mal spiegato. Questa sarebbe la prima domanda che qualcuno avrebbe se fosse " –

+0

ho capito bene: punta a ivysettings.xml nel vaso? Perché non ho mai impostato la variabile ivy.default.settings.url e non ho neanche un ivysettings.xml sul mio filesystem. –

+0

molto tempo fa, ma esegui form con -d o -v e dovrebbe mostrare molte informazioni tra cui variabili e valori delle proprietà –

0

Nella tua build.xml includono seguente:

<property name="ivy.settings.dir" value="PATH OF SETTINGS" /> 
<property file="${ivy.settings.dir}/ivysettings.properties" /> 
<ivy:settings file="${ivy.settings.dir}/ivysettings.xml" /> 
Problemi correlati