maven scope/site/effective-pom/assembly
?point1:<dependency>依賴范圍
<scope/>中進行配置
??? --compile:默認配置,對編譯/測試/運行三種都有效。
??? --test:只對測試有效。
??? --runtime:測試和運行時有效,編譯時無效。比如要使用JDBC驅動時,只在運行時使用它就好。
??? --provided:編譯和測試時有效,運行時無效。舉個場景,在有的web項目中,會用到servlet-api這個依賴,在本地編譯和測試都沒有問題,但是當把war包部署到tomcat時,會報錯:
Caused by: java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/catalina/loader/WebappClassLoader) previously initiated loading for a different type with name "javax/servlet/ServletContext"at java.lang.ClassLoader.defineClass1(Native Method)at java.lang.ClassLoader.defineClass(ClassLoader.java:800)at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)at java.net.URLClassLoader.access$100(URLClassLoader.java:71)at java.net.URLClassLoader$1.run(URLClassLoader.java:361)at java.net.URLClassLoader$1.run(URLClassLoader.java:355)產(chǎn)生的原因就是tomcat也有這個servlet-api,所以添加:
<dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>3.0-alpha-1</version><scope>provided</scope> </dependency>可以讓servlet-api只在編譯和測試時有效,而當tomcat啟動后就不生效,非常方便。
?----------------------------------------------------------------------------------
?point2:effective-pom
???? --并不是說我們自己pom.xml文件中所定義的依賴就是整個工程的依賴,它還包含了超級pom中的依賴(安裝包中的lib下maven-model-builder-3.0.5.jar中規(guī)定了核心的依賴),所以真正生效的pom是我們自定義和超級pom以及可能的其他pom(父pom)等的疊加。by the way,在超級pom中還定義了中央庫的位置,所以默認的settings.xml中并不用指定到哪里下載這些依賴。
??----------------------------------------------------------------------------------
point3:mvn site
這可以生成一個站點,包含了此項目的一些信息,比較常見的mvn cobertura:cobertura可以將項目的代碼覆蓋率統(tǒng)計并展示出來,進入site目錄,點開index.html可以看到:
? ----------------------------------------------------------------------------------?
point4:打包命令--
maven提供了完備的打包機制。assembly插件常用的套件描述符包括
bin----將jar包打zip包
jar-with-dependencies----帶有依賴的jar包
project----將工程源代碼打包
src----將工程src目錄下的源代碼打包
E:\Users\BruceChan\workspace\dev01\TestMaven>mvn assembly:single -DdescriptorId=project [INFO] Scanning for projects... [WARNING] [WARNING] Some problems were encountered while building the effective model for com.changjiang.test:TestMaven:jar:0.0.1-SNAPSHOT [WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-jar-plugin is missing. @ line 67, column 12 [WARNING] [WARNING] It is highly recommended to fix these problems because they threaten the stability of your build. [WARNING] [WARNING] For this reason, future Maven versions might no longer support building such malformed projects. [WARNING] [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building TestMaven 0.0.1-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-assembly-plugin:2.2-beta-5:single (default-cli) @ TestMaven --- [INFO] Building tar : E:\Users\BruceChan\workspace\dev01\TestMaven\target\TestMaven-0.0.1-SNAPSHOT-project.tar.gz [INFO] Building tar : E:\Users\BruceChan\workspace\dev01\TestMaven\target\TestMaven-0.0.1-SNAPSHOT-project.tar.bz2 [INFO] Building zip: E:\Users\BruceChan\workspace\dev01\TestMaven\target\TestMaven-0.0.1-SNAPSHOT-project.zip [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 8.702s [INFO] Finished at: Thu Aug 25 10:05:22 CST 2016 [INFO] Final Memory: 20M/244M [INFO] ------------------------------------------------------------------------轉載于:https://www.cnblogs.com/bruceChan0018/p/5784315.html
總結
以上是生活随笔為你收集整理的maven scope/site/effective-pom/assembly的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎样用hibernate验证登陆界面的用
- 下一篇: Python 从零学起(纯基础) 笔记