maven學習總結:幾個常用的maven外掛
我們使用maven做一些日常的工作開發的時候,無非是想利用這個工具帶來的一些便利。比如它帶來的依賴管理,方便我們打包和部署執行。這裡幾個常見的外掛就是和這些工程中常用的步驟相關。
maven-compile-plugin
這個外掛就如同名字所顯示的這樣,用來編譯原始碼的。最開始碰到這個外掛是在於有的時候我們下載了一些工程需要編譯的時候,比如我們輸入命令:mvn install ,但是系統編譯的時候報錯了,錯誤的資訊如下:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project springJMS: Compilation failure: Compilation failure: [ERROR] /home/frank/programcode/SpringJMSSample/src/main/java/huangbowen/net/jms/MessageSender.java:[6,1] error: annotations are not supported in -source 1.3 [ERROR] [ERROR] (use -source 5 or higher to enable annotations) [ERROR]/home/frank/programcode/SpringJMSSample/src/main/java/net/EmbedBrokerApp.java:[5,7] error: static import declarations are not supported in -source 1.3 [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switchto enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
從錯誤顯示的資訊我們就可以看出,這是因為編譯的時候是預設用的javac 1.3版本的,太老了不支援程式碼裡的特性。為了修改這個問題,我們需要設定編譯器的版本。解決這個問題的辦法也比較簡單,就是直接在後面的外掛部分增加如 下的外掛,比如如下部分,將編譯器的版本設定為1.6:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> </plugins> </build>
exec-maven-plugin
我們寫一些java console相關的程式時,比較頭疼的一點就是真正要通過命令列將打包後的程式執行起來還是比較麻煩的。我們需要在命令列裡敲如下的命令:java -cp ***.jar:**.jar:/**/ 。因為要將classpath目錄以及引用的類庫都加入進來,並指定執行的入口,這樣子每次用手工的方式來處理實在是太繁瑣也比較容易出錯。所以一種辦法 就是利用這個外掛,通過一些基本的配置,我們可以執行起程式碼來的時候很方便。一個典型的配置如下:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2.1</version> <executions> <execution> <goals> <goal>java</goal> </goals> </execution> </executions> <configuration> <mainClass>com.yunzero.App</mainClass> </configuration> </plugin>
如果我們執行的時候需要提供一些輸入的引數,也可以通過configuration的元素裡新增。這樣後續要執行這個程式時,我們只需要在命令列執行如下命令:mvn exec:java ,然後程式就可以執行起來了。
maven-dependency-plugin
還有一個比較常用的外掛就是這個。我們在IDE的環境裡編譯和執行程式碼的時候,那是直接引用一些類庫。但是在我們實際部署的環境裡,那邊很可能 就一個java執行環境,不可能有原始碼和IDE。這個時候,我們需要將原始碼編譯打包。這個時候的一個問題就是如果我們引用的庫很多的話,我們希望能夠 把他們統一打包到一個目錄下,比如lib資料夾。這樣部署執行的時候只需要將編譯生成的程式jar包和依賴包資料夾拷到特定目錄去執行。要實現這個效果也 比較容易:
<plugin> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <phase>install</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> </configuration> </execution> </executions> </plugin>
從前面的配置裡我們可以看到,外掛的執行被配置到install這個階段。這樣,當我們執行命令:mvn clean install 的時候,會發現對應的target目錄裡生成了對應的jar包和依賴包。