2012-08-09 15 views

risposta

110

Entrambi i plugin e le dipendenze sono file Jar.

Ma la differenza tra loro è che la maggior parte del lavoro in Maven è fatto usando i plugin; mentre la dipendenza è solo un file Jar che verrà aggiunto al classpath durante l'esecuzione delle attività.

Ad esempio, si utilizza un compilatore-plugin per compilare i file java. Non è possibile utilizzare il compilatore come dipendenza, poiché questo aggiungerà il plugin solo al classpath e non attiverà alcuna compilazione. I file Jar da aggiungere al classpath durante la compilazione del file, verranno specificati come dipendenza.

Lo stesso vale per lo scenario. Devi usare il plug-in di primavera per eseguire alcuni eseguibili di primavera [non sono sicuro di cosa siano i plug-in di primavera. Sto solo facendo una supposizione qui]. Ma hai bisogno di dipendenze per eseguire questi eseguibili. E Junit è taggato sotto dipendenza poiché viene usato da surefire-plugin per l'esecuzione di unit test.

Quindi, possiamo dire, plugin è un file Jar che esegue l'attività, e la dipendenza è un Jar che fornisce i file di classe per eseguire l'attività.

Spero che risponda alla tua domanda!

+0

grazie per la spiegazione ora ho capito :) – Soumyaansh

+1

Bella spiegazione. – bugCracker

+0

Qualcuno può dirmi qual è il diverso tra fase e obiettivo in esecuzione ?? Come sapevo, la fase parla del ciclo di vita di un esperto ... ma perché ancora una volta? qualche suggerimento? A volte vedo persone mettere la parola chiave del ciclo di vita all'obiettivo ... ??? (?.?) – taymedee

28

Lo stesso Maven può essere descritto come robot da cucina che ha molte unità diverse che possono essere utilizzate per svolgere diversi compiti. Quelle unità sono chiamate plugin. Ad esempio, per compilare il progetto, maven utilizza maven-compiler-plugin, per eseguire i test - maven-surefire-plugin e così via.

La dipendenza in termini di Maven è un pacchetto di classi da cui dipende il progetto. Può essere jar, war etc. Ad esempio, se vuoi essere in grado di scrivere il test JUnit, dovrai usare annotazioni e classi JUnit, quindi devi dichiarare che il tuo progetto dipende da JUnit.

+0

grazie per la rapida risposta, mi spiace ma sono ancora confuso perché so che JUnit è anche un framework e (ibernato, molla) anche solo nell'ambito del framework, quindi è anche possibile che nei casi (hibernate, spring) si possa configurare nei tag di dipendenza? Spero tu abbia la mia domanda. – Soumyaansh

+0

Sì, e per quanto ne so non esiste un plug-in di Spring Maven. Solitamente, le librerie Spring (o Hibernate, o JUnit, o TestNG ecc.) Sono dichiarate come dipendenze per il progetto. Se sei nuovo di Maven ti consiglio di leggere [questo] (http://www.sonatype.com/books/mvnref-book/reference/) ottimo libro. –

+0

grazie per il link ce ne vado sicuramente !! – Soumyaansh

3

plug-in sono utilizzate per aggiungere funzionalità per Maven stessa (come l'aggiunta eclipse supporto o SpringBoot sostegno Maven ecc). Le dipendenze sono necessarie per il codice sorgente per passare qualsiasi fase Maven (compile o test per esempio). In caso di JUnit poiché il codice di prova è fondamentalmente parte della base di codice e si chiama JUnit comandi specifici all'interno delle suite di test e tali comandi non sono forniti da Java SDK pertantodeve essere presente all'ora Maven è nella fase di test e viene gestito citando JUnit come dipendenza nel file pom.xml.

3

Se stai venendo da un background di front-end, come me, e ha familiarità con Grunt e NPM, pensa a come questo:

In primo luogo si correrebbe, per esempio, npm install grunt-contrib-copy --save-dev. Questo è come il <dependency></dependency> di Maven. Scarica i file necessari per eseguire un'attività di compilazione.

Poi si dovrebbe configurare l'attività in Gruntfile.js

copy: { 
    main: { 
    src: 'src/*', 
    dest: 'dest/', 
    }, 
} 

Questo è come Maven di <plugin>/<plugin>.Stai dicendo allo strumento di costruzione cosa fare con il codice scaricato da npm/<dependency></dependency>.

Ovviamente questa non è un'analogia esatta, ma abbastanza vicina da aiutare a capirlo.

Problemi correlati