2010-12-27 15 views
12
<dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
     <scope>provided</scope> 
</dependency> 

Io uso quell'importazione delle dipendenze sul mio pom.xml del mio progetto. La mia domanda è che ho dichiarato 2.5 come versione. Tuttavia è importante scrivere una versione più bassa? Per esempio voglio dire che se il mio progetto utilizza la versione 3.0 e scrivo che sarà disponibile 2.5? (Intendo dire che accettiamo che 2.5 va bene e che il mio progetto funzioni bene, se non cambio nient'altro e cambi solo 2.5 a 2.0 causa un errore?)maven fornito scope

risposta

6

Dipende.

In generale, se vi aspettate una versione precisa (anche se previsto), allora questo è ciò che è necessario fornire.

Tuttavia, ci sono casi in cui potrebbe essere necessario finezza le versioni un po '. Detto questo - vorrei contendersi 2 punti:

1) è probabilmente ok per avere il vostro progetto si aspettano una versione più bassa e essere fornito con una versione superiore; fintanto che la versione superiore non è un importante uno. Vorrei suggerire di dare un'occhiata a un buon open source versioning del modello, come ad esempio un Apache project.

2) Probabilmente è NON ok per fare in modo che il progetto preveda una versione più alta e ottenerne una inferiore. La ragione principale è che non puoi aspettarti cose che potrebbero non esserci.

Spero che questo aiuti.

+0

Grazie. Capisco che se non uso alcuni metodi non ha una compatibilità con versioni inferiori di esso, è OK. – kamaci

20

La soluzione corretta è dichiarare la versione esatta della API servlet utilizzata nel contenitore per il minore.

La parola chiave è fornita: qualsiasi versione specificata viene utilizzata in fase di compilazione e per il test. Si presuppone che il runtime venga fornito dal proprio contenitore runtime, ad es. Molo.

Se la libreria di runtime effettiva differisce dalla dichiarazione nel tuo POM, stai invitando problemi. Se si verificheranno o non si verificheranno problemi è una questione di compatibilità tra le versioni.

L'API Servlet è compatibile, vedi: Are the Java Servlet APIs backwards compatible?

+0

Grazie, l'hai descritto bene, sto votando. – kamaci

Problemi correlati