{"id":48,"date":"2014-06-17T23:24:42","date_gmt":"2014-06-17T21:24:42","guid":{"rendered":"http:\/\/www.valeriofinazzo.it\/wordpress\/?p=48"},"modified":"2014-06-17T23:27:35","modified_gmt":"2014-06-17T21:27:35","slug":"maven-tutorial-3-gestione-delle-dipendenze","status":"publish","type":"post","link":"http:\/\/www.valeriofinazzo.it\/wordpress\/2014\/06\/maven-tutorial-3-gestione-delle-dipendenze\/","title":{"rendered":"MAVEN TUTORIAL &#8211; 3 &#8211; GESTIONE DELLE DIPENDENZE"},"content":{"rendered":"<p style=\"color: #0d293f; text-align: justify;\">Per la gestione del progetto Maven applica i concetti di dipendenza, ereditariet\u00e0 e aggregazione.<\/p>\n<p style=\"color: #0d293f; text-align: justify;\">La dipendenza viene gestita tramite il tag dependency. Tale tag permette di individuare gli elementi necessari per la gestione del progetto.<\/p>\n<pre class=\"lang:default decode:true crayon-selected\">&lt;dependencies&gt;\r\n    &lt;dependency&gt;\r\n      &lt;groupId&gt;junit&lt;\/groupId&gt;\r\n      &lt;artifactId&gt;junit&lt;\/artifactId&gt;\r\n      &lt;version&gt;4.0&lt;\/version&gt;\r\n      &lt;type&gt;jar&lt;\/type&gt;\r\n      &lt;scope&gt;test&lt;\/scope&gt;\r\n      &lt;optional&gt;true&lt;\/optional&gt;\r\n    &lt;\/dependency&gt;\r\n&lt;\/dependencies&gt;\r\n<\/pre>\n<p style=\"color: #0d293f; text-align: justify;\">La tripletta groupId, artifactId e version identifica univocamente la libreria all&#8217;interno del repository Maven.<\/p>\n<p style=\"color: #0d293f; text-align: justify;\">Il tag type individua il formato della libreria, se non \u00e8 indicato vale jar.<\/p>\n<p style=\"color: #0d293f; text-align: justify;\">Il tag scope invidua per quale fase del progetto\u00e8 necessaria la libreria. Pu\u00f2 assumere vari valori:<\/p>\n<ul style=\"color: #143c5d; text-align: justify;\">\n<li>compile &#8211;&gt; indica che la libreria \u00e8 necessaria per la compilazione. E&#8217; il valore di default qualora non venga indicato.<\/li>\n<li>provided &#8211;&gt; indica che la libreria \u00e8 necessaria per la compilazione, ma che viene fornita dalla JDK o dal container.<\/li>\n<li>runtime &#8211;&gt; indica che la libreria non \u00e8 necessaria per la compilazione, ma solo per l&#8217;esecuzione.<\/li>\n<li>test &#8211;&gt; indica che la libreria \u00e8 usata solo in fase di testing.<\/li>\n<li>system &#8211;&gt; \u00e8 simile al provided, ma in tal caso \u00e8 compito dell&#8217;utente indicare dove reperire la libreria tramite il tag systemPath<\/li>\n<\/ul>\n<p style=\"color: #0d293f; text-align: justify;\">Il tag optional indica che la libreria \u00e8 opzionale qualora si volesse aggiungere in un nuovo progetto la dipendenza da questo progetto.<\/p>\n<p style=\"color: #0d293f; text-align: justify;\">Tramite il tag exclusion \u00e8 possibile rimuovere delle specifiche dipendenze dagli artifatti aggiunti.<\/p>\n<p style=\"color: #0d293f; text-align: justify;\">L&#8217;ereditariet\u00e0 permette di creare nuovi POM file che ereditano le relazioni definite in un super POM. Il tutto viene gestito tramite il tag parent. Ecco un esempio.<\/p>\n<pre class=\"lang:default decode:true\">&lt;parent&gt;\r\n    &lt;groupId&gt;org.codehaus.mojo&lt;\/groupId&gt;\r\n    &lt;artifactId&gt;my-parent&lt;\/artifactId&gt;\r\n    &lt;version&gt;2.0&lt;\/version&gt;\r\n&lt;\/parent&gt;<\/pre>\n<p style=\"color: #0d293f; text-align: justify;\">E&#8217; possibile anche definire un progetto come aggregato di altri progetti. L&#8217;aggregazione viene gestita dal tag module. In tal modo \u00e8 possibile tramite un solo pom gestire il ciclo di vita di pi\u00f9 sottoprogetti.<\/p>\n<pre class=\"lang:default decode:true\">&lt;modules&gt;\r\n    &lt;module&gt;my-project&lt;\/module&gt;\r\n    &lt;module&gt;another-project&lt;\/module&gt;\r\n&lt;\/modules&gt;<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Per la gestione del progetto Maven applica i concetti di dipendenza, ereditariet\u00e0 e aggregazione. La dipendenza viene gestita tramite il tag dependency. Tale tag permette di individuare gli elementi necessari per la gestione del progetto. &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;junit&lt;\/groupId&gt; &lt;artifactId&gt;junit&lt;\/artifactId&gt; &lt;version&gt;4.0&lt;\/version&gt; &lt;type&gt;jar&lt;\/type&gt; &lt;scope&gt;test&lt;\/scope&gt; &lt;optional&gt;true&lt;\/optional&gt; &lt;\/dependency&gt; &lt;\/dependencies&gt; La tripletta groupId, artifactId e version identifica univocamente la libreria &hellip; <a href=\"http:\/\/www.valeriofinazzo.it\/wordpress\/2014\/06\/maven-tutorial-3-gestione-delle-dipendenze\/\" class=\"more-link\">Continua la lettura di <span class=\"screen-reader-text\">MAVEN TUTORIAL &#8211; 3 &#8211; GESTIONE DELLE DIPENDENZE<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[5],"tags":[6],"_links":{"self":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/48"}],"collection":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/comments?post=48"}],"version-history":[{"count":6,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/48\/revisions"}],"predecessor-version":[{"id":54,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/48\/revisions\/54"}],"wp:attachment":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/media?parent=48"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/categories?post=48"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/tags?post=48"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}