ÕªÒª£º±¾ÎÄÖ÷Òª½²½âÊÇMavenʹÓùý³ÌÖÐһЩ³£ÓõÄÃüÁ²¢ÅäÉÏͼƬ˵Ã÷£¬×îºó»¹½²ÁËpom.xmlÎļþµÄһЩ¹¹Ôì¡£
Ò»¡¢Maven³£ÓÃÃüÁî
1.1¡¢Maven ²ÎÊý
-D ´«ÈëÊôÐÔ²ÎÊý
-P ʹÓÃpomÖÐÖ¸¶¨µÄÅäÖÃ
-e ÏÔʾmavenÔËÐгö´íµÄÐÅÏ¢
-o ÀëÏßÖ´ÐÐÃüÁî,¼´²»È¥Ô¶³Ì²Ö¿â¸üаü
-X ÏÔʾmavenÔÊÐíµÄdebugÐÅÏ¢
-U Ç¿ÖÆÈ¥Ô¶³Ì²Î¿¼¸üÐÂsnapshot°ü
ÀýÈç mvn install -Dmaven.test.skip=true -Poracle
ÆäËû²ÎÊý¿ÉÒÔͨ¹ýmvn help »ñÈ¡
1.2¡¢maven³£ÓÃÃüÁî
1¡¢mvn clean
˵Ã÷: ÇåÀíÏîÄ¿Éú²úµÄÁÙʱÎļþ,Ò»°ãÊÇÄ£¿éϵÄtargetĿ¼

ÏÂÃæÀ´¿´¿´Ä¿Â¼£º

2¡¢mvn package
˵Ã÷: ÏîÄ¿´ò°ü¹¤¾ß,»áÔÚÄ£¿éϵÄtargetĿ¼Éú³Éjar»òwarµÈÎļþ£¬ÈçÏÂÔËÐнá¹û¡£

Éú³ÉµÄÎļþ ÈçÏ£º

3¡¢mvn test
˵Ã÷: ²âÊÔÃüÁî,»òÖ´ÐÐsrc/test/java/ÏÂjunitµÄ²âÊÔÓÃÀý.

4¡¢mvn install
˵Ã÷: Ä£¿é°²×°ÃüÁî ½«´ò°üµÄµÄjar/warÎļþ¸´ÖƵ½ÄãµÄ±¾µØ²Ö¿âÖÐ,¹©ÆäËûÄ£¿éʹÓà -Dmaven.test.skip=true
Ìø¹ý²âÊÔ(ͬʱ»áÌø¹ýtest compile)

µÚÒ»¸öºì¿òÊÇËüµÄÊäÈë·¾¶£¬Ò²ÊDZ¾µØ²Ö¿âµÄ·¾¶
ÎļþÈçÏ £º

5¡¢mvn deploy
˵Ã÷: ·¢²¼ÃüÁî ½«´ò°üµÄÎļþ·¢²¼µ½Ô¶³Ì²Î¿¼,ÌṩÆäËûÈËÔ±½øÐÐÏÂÔØÒÀÀµ ,Ò»°ãÊÇ·¢²¼µ½¹«Ë¾µÄ˽·þ£¬ÕâÀïÎÒûÅäÖÃ˽·þ£¬ËùÒԾͲ»ÑÝʾÁË¡£
1.3¡¢maven-eclipse-plugin²å¼þ
1¡¢mvn eclipse:eclipse
˵Ã÷: Éú³ÉeclipseÅäÖÃÎļþ,µ¼Èëµ½eclipse¿ª·Å,Èç¹ûÊÇʹÓÃm2eclipse²å¼þ,Ôò¿ÉÒÔ²»ÓôÎÃüÁî.Ö±½ÓʹÓòå¼þµ¼Èëµ½eclipse½øÐпª·Å
×¢:ͨ¹ý´ÎÃüÁîÉú²úµÄÏîÄ¿,ÐèÒªÔÚeclipseÖÐÅäÖÃM2_HOMEµÄÃüÁî,Ö¸ÏòÄãµÄ±¾µØ²Ö¿âÎļþ¼Ð.

À´¿´¿´Éú³ÉµÄ½á¹û£º¡£classpath¾ÍÊÇ×Ö½ÚÂë

2¡¢mvn eclipse:m2eclipse
Éú³ÉeclipseÅäÖÃÎļþ,¸ÃÅäÖÃÎļþÐèÒÀÀµeclipse ÖÐÓÐm2eclipse
-DdownloadSources=true ÏÂÔØÒÀÀµ°üµÄÔ´ÂëÎļþ
-Declipse.addVersionToProjectName=true Ìí¼Ó°æ±¾ÐÅÏ¢µ½ÏîÄ¿Ãû³ÆÖÐ
3¡¢mvn eclipse:clean
Çå³ýeclipseµÄÏîÄ¿Îļþ

¿´¿´ÎļþÄÚÈÝ£¬Ã»ÓÐprojectÎļþ ÁË
>
1.4¡¢maven-jetty-plugin²å¼þ
1¡¢mvn jetty:run
˵Ã÷: ¿ÉÒÔÖ±½ÓÓÃjettyµÄ·þÎñÆ÷ÔËÐÐ ×¢:´ËÃüÁîÖ»ÊÊÓÃÓÚwarµÄÄ£¿é,¼´webÄ£¿é.
2¡¢mvn archetype:generate
˵Ã÷: Ä£¿é´´½¨ÃüÁî, Ö´ÐÐÃüÁîºó£¬»áÌáʾѡÔñ´´½¨ÏîÄ¿µÄÄ£°æ£¬ÕâÀïÑ¡18(maven-archetype-quickstart)
ºóÃæ»áÌáʾÄãÊäÈëgroupId(°ü´æ·ÅµÄ·¾¶):
eg:com.lin
ÌáʾÊäÈëartifactId(Ä£¿éÃû³Æ)£º
eg:test-core
ÌáʾÊäÈëversion(°æ±¾):
1.0.0-SNAPSHOT
ÌáʾÊäÈëpackage(Ö¸ÏîÄ¿Öлù±¾µÄ°ü·¾¶):
eg:com.lin
ÌáʾȷÈÏ,»Ø³µ¼´¿É
1.5¡¢maven-release-plugin²å¼þ
˵Ã÷: ·¢Ðа汾,¿ÉÓëscm¹¤¾ß¼¯³É,À´Ìṩ°æ±¾¹ÜÀí.²»µÈͬÓë°æ±¾¿ØÖÆ.ÔÊÐíÊDZØÐëÓÐgoal.Á½¸ö³£ÓõÄgoalÈçÏÂ:
1¡¢mvn release:clean
ÇåÀírelease²Ù×÷ÊÇÒÅÁôÏÂÀ´µÄÎļþ

2¡¢mvn release:branch
˵Ã÷: ´´½¨·ÖÖ§,»áÔÚ·ÖÖ§Ï´´½¨Ö´ÐеķÖ֧·¾¶
-DbranchName=xxxx-100317 ·ÖÖ§ÖеÄÃû³Æ
-DupdateBranchVersions=false ÊÇ·ñ¸üзÖÖ§µÄ°æ±¾ÐÅÏ¢,ĬÈÏΪfalse
-DupdateWorkingCopyVersions=false ÊÇ·ñ¸üÐÂÖ÷¸ÉµÄ°æ±¾ÐÅÏ¢,ĬÈÏΪtrue
3¡¢mvn release:prepare
´´½¨±ê¼Ç,»áÓн»»¥¹ý³Ì,ÌáʾtagÖÐpomµÄ°æ±¾¼°trunkϵÄа汾ºÅ,ÿ¸öÄ£¿é¶¼»áѯÎÊ,ĬÈÏÊÇ×îС°æ±¾ºÅ+1
-Dtag = 4.4.0 ½«ÔÚtags´´½¨¸ÃÃû³ÆÎļþ¼Ð
-DdryRun=true ¼ì²é¸÷ÏîÉèÖÃÊÇ·ñÕýÈ·,¿É×ö²âÊÔÓÃ,»á²úÉúһЩÐ޸ĵÄÅäÖÃÎļþÐÅÏ¢.
ÃüÁî:
mvn release:perform
´ÎÃüÁî»á×Ô¶¯°ïÎÒÃÇÇ©³ö¸Õ²Å´òµÄtag£¬È»ºó´ò°ü£¬·Ö·¢µ½Ô¶³ÌMaven²Ö¿âÖÐ
1.6¡¢MavenÕ¾µã±¨±í
1¡¢mvn project-info-reports:dependencies
Éú³ÉÏîÄ¿ÒÀÀµµÄ±¨±í
2¡¢mvn dependency:resolve
²é¿´ÒÀÀµ

²é¿´ÏîÄ¿ÒÀÀµÇé¿ö
3¡¢mvn dependency:tree
´òÓ¡³öÏîÄ¿µÄÕû¸öÒÀÀµÊ÷

4¡¢mvn dependency:analyze
°ïÖúÄã·ÖÎöÒÀÀµ¹ØÏµ, ÓÃÀ´È¡³öÎÞÓÃ, ÖØ¸´ÒÀÀµµÄºÃ°ïÊÖ

5¡¢mvn install -X
×·×ÙÒÀÀµµÄÍêÕû¹ì¼£

6¡¢ÉúÃüÖÜÆÚ
resource->compile->process-classes->process-test-resources->test-compile->test->prepare-package->package
resources:resources °ó¶¨ÔÚresource´¦Àí½×¶Î, ÓÃÀ´½«src/main/resourcesÏ»òÕßÈκÎÖ¸¶¨ÆäËûĿ¼ÏµÄÎļþcopyµ½Êä³öĿ¼ÖÐ
resources:testResources ½«testϵÄresourcesĿ¼»òÕßÈκÎÖ¸¶¨ÆäËûĿ¼copyµ½testÊä³öĿ¼ÏÂ
compiler:testCompile ½«²âÊÔÀà±àÒë(°üÀ¨copy×ÊÔ´Îļþ)
surefire:test ÔËÐвâÊÔÓÃÀý
jar:jar ´òjar°ü
¶þ¡¢¸÷ÖÖ·¶Î§
compile£¨±àÒ뷶Χ£©
compileÊÇĬÈϵķ¶Î§£»Èç¹ûûÓÐÌṩһ¸ö·¶Î§£¬ÄǸÃÒÀÀµµÄ·¶Î§¾ÍÊDZàÒ뷶Χ¡£±àÒ뷶ΧÒÀÀµÔÚËùÓеÄclasspathÖпÉÓã¬Í¬Ê±ËüÃÇÒ²»á±»´ò°ü¡£
provided£¨ÒÑÌṩ·¶Î§£©
providedÒÀÀµÖ»ÓÐÔÚµ±JDK»òÕßÒ»¸öÈÝÆ÷ÒÑÌṩ¸ÃÒÀÀµÖ®ºó²ÅʹÓá£ÀýÈ磬Èç¹ûÄ㿪·¢ÁËÒ»¸öwebÓ¦Óã¬Äã¿ÉÄÜÔÚ±àÒëclasspathÖÐÐèÒª¿ÉÓõÄServlet
APIÀ´±àÒëÒ»¸öservlet£¬µ«ÊÇÄã²»»áÏëÒªÔÚ´ò°üºÃµÄWARÖаüº¬Õâ¸öServlet API£»Õâ¸öServlet
API JARÓÉÄãµÄÓ¦Ó÷þÎñÆ÷»òÕßservletÈÝÆ÷Ìṩ¡£ÒÑÌṩ·¶Î§µÄÒÀÀµÔÚ±àÒëclasspath£¨²»ÊÇÔËÐÐʱ£©¿ÉÓá£ËüÃDz»ÊÇ´«µÝÐԵģ¬Ò²²»»á±»´ò°ü¡£
runtime£¨ÔËÐÐʱ·¶Î§£©
runtimeÒÀÀµÔÚÔËÐкͲâÊÔϵͳµÄʱºòÐèÒª£¬µ«ÔÚ±àÒëµÄʱºò²»ÐèÒª¡£±ÈÈ磬Äã¿ÉÄÜÔÚ±àÒëµÄʱºòÖ»ÐèÒªJDBC
API JAR£¬¶øÖ»ÓÐÔÚÔËÐеÄʱºò²ÅÐèÒªJDBCÇý¶¯ÊµÏÖ¡£
test£¨²âÊÔ·¶Î§£©
test·¶Î§ÒÀÀµ ÔÚÒ»°ãµÄ ±àÒëºÍÔËÐÐʱ¶¼²»ÐèÒª£¬ËüÃÇÖ»ÓÐÔÚ²âÊÔ±àÒëºÍ²âÊÔÔËÐн׶οÉÓá£
system£¨ÏµÍ³·¶Î§£©
system·¶Î§ÒÀÀµÓëprovidedÀàËÆ£¬µ«ÊÇÄã±ØÐëÏÔʽµÄÌṩһ¸ö¶ÔÓÚ±¾µØÏµÍ³ÖÐJARÎļþµÄ·¾¶¡£Õâô×öÊÇΪÁËÔÊÐí»ùÓÚ±¾µØ¶ÔÏó±àÒ룬¶øÕâЩ¶ÔÏóÊÇϵͳÀà¿âµÄÒ»²¿·Ö¡£ÕâÑùµÄ¹¹¼þÓ¦¸ÃÊÇÒ»Ö±¿ÉÓõģ¬MavenÒ²²»»áÔÚ²Ö¿âÖÐȥѰÕÒËü¡£¡£Èç¹ûÄ㽫һ¸öÒÀÀµ·¶Î§ÉèÖóÉϵͳ·¶Î§£¬Äã±ØÐëͬʱÌṩһ¸ösystemPathÔªËØ¡£×¢Òâ¸Ã·¶Î§ÊDz»ÍƼöʹÓõģ¨ÄãÓ¦¸ÃÒ»Ö±¾¡Á¿È¥´Ó¹«¹²»ò¶¨ÖƵÄMaven²Ö¿âÖÐÒýÓÃÒÀÀµ£©¡£
Èý¡¢POMÎļþ½²½â
POMÈ«³ÆÊÇProject Object Model£¬¼´ÏîÄ¿¶ÔÏóÄ£ÐÍ¡£pom.xmlÊÇmavenµÄÏîÄ¿ÃèÊöÎļþ£¬ËüÀàËÆÓëantxµÄproject.xmlÎļþ¡£pom.xmlÎļþÒÔxmlµÄ
ÐÎʽÃèÊöÏîÄ¿µÄÐÅÏ¢£¬°üÀ¨ÏîÄ¿Ãû³Æ¡¢°æ±¾¡¢ÏîÄ¿id¡¢ÏîÄ¿µÄÒÀÀµ¹ØÏµ¡¢±àÒë»·¾³¡¢³ÖÐø¼¯³É¡¢ÏîÄ¿ÍŶӡ¢¹±Ï×¹ÜÀí¡¢Éú³É±¨±íµÈµÈ¡£×ÜÖ®£¬Ëü°üº¬ÁËËùÓеÄÏîÄ¿
ÐÅÏ¢¡£
3.2.1. pom.xmlµÄ»ù±¾ÅäÖÃ
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.lin.learning</groupId> <artifactId>maven-hellowrold</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>maven-hellowrold</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding> UTF-8</project.build.sourceEncoding> </properties> </project> |
modelVersion ÃèÊöÕâ¸öPOMÎļþÊÇ×ñ´ÓÄĸö°æ±¾µÄÏîÄ¿ÃèÊö·û¡£
groupId Õë¶ÔÒ»¸öÏîÄ¿µÄÆÕ±éΨһʶ±ð·û¡£Í¨³£ÓÃÒ»¸öÍêÈ«ÕýÈ·µÄ°üµÄÃû×ÖÀ´ÓëÆäËûÏîÄ¿µÄÀàËÆÃû×ÖÀ´½øÐÐÇø·Ö£¨±ÈÈ磺org.apache.maven)¡£
artifactId ÔÚ¸ø¶¨groupID µÄgroupÀïÃæÎªartifact Ö¸¶¨µÄ±êʶ·ûÊÇΨһµÄ £¬
artifact ´ú±íµÄÊDZ»ÖÆ×÷»òÕß±»Ò»¸öprojectÓ¦ÓõÄ×é¼þ(²ú³öÎï)¡£
version µ±Ç°ÏîÄ¿²úÉúµÄartifactµÄ°æ±¾ÒÔÉÏ4¸öÔªËØÈ±Ò»²»¿É£¬ÆäÖÐgroupId, artifactId,
versionÃèÊöÒÀÀµµÄÏîĿΨһ±êÖ¾¡£
1. pom.xmlÎļþ½á¹¹
<project> <modelVersion>4.0.0</modelVersion> <!- The Basics ÏîÄ¿µÄ»ù±¾ÐÅÏ¢-> <groupId>...</groupId> <artifactId>...</artifactId> <version>...</version> <packaging>...</packaging> <dependencies>...</dependencies> <parent>...</parent> <dependencyManagement>...</dependencyManagement> <modules>...</modules> <properties>...</properties> <!- Build Settings ÏîÄ¿µÄ±àÒëÉèÖÃ-> <build>...</build> <reporting>...</reporting> <!- More Project Information ÆäËüÏîÄ¿ÐÅÏ¢ -> <name>...</name> <description>...</description> <url>...</url> <inceptionYear>...</inceptionYear> <licenses>...</licenses> <organization>...</organization> <developers>...</developers> <contributors>...</contributors> <!-- Environment Settings -> <issueManagement>...</issueManagement> <ciManagement>...</ciManagement> <mailingLists>...</mailingLists> <scm>...</scm> <prerequisites>...</prerequisites> <repositories>...</repositories> <pluginRepositories>...</pluginRepositories> <distributionManagement>...</distributionManagement> <profiles>...</profiles> </project> |
projectÊÇpom.xmlµÄ¸ù½Úµã£¬ÖÁÓÚÆäËüÔªËØÇë²Î¿¼POM Reference
2.¡¢POMºÜÖØÒªµÄ3¸ö¹ØÏµ
POMÓÐ3¸öºÜÖØÒªµÄ¹ØÏµ£ºÒÀÀµ¡¢¼Ì³Ð¡¢ºÏ³É¡£
2.1. ÒÀÀµ¹ØÏµ
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.0</version> <type>jar</type> <scope>test</scope> <optional>true</optional> </dependency> ... </dependencies> |
Èç¹ûÏëÒÀÀµÒ»¸ömaven¿âÖÐûÓеÄÒ»¸öjar°ü£¬·½·¨ºÜ¼òµ¥£¬¾ÍÊÇÏȽ«´Ëjar°üʹÓÃÒÔϵÄÃüÁî°²×°µ½±¾µØmaven¿âÖУº
mvn install:install-file -Dfile=my.jar -DgroupId=mygroup
-DartifactId=myartifactId -Dversion=1
ÔÙ°ÑÒÀÀµ¹ØÏµ¼Ó½øÈ¥¼´¿É¡£
2.2. ¼Ì³Ð¹ØÏµ
ÁíÒ»¸öÇ¿´óµÄ±ä»¯, maven´øÀ´µÄÊÇÏîÄ¿¼Ì³Ð¡£
2.2.1. ¶¨Ò常ÏîÄ¿
<project> <modelVersion>4.0.0</modelVersion> <groupId>com.mygroup </groupId> <artifactId>my-parent</artifactId> <version>2.0</version> <packaging>pom</packaging> </project> |
packaging ÀàÐÍ£¬¶¨ÒåֵΪ pomÓÃÓÚ¶¨ÒåΪparentºÍºÏ³É¶à¸öÏîÄ¿¡£ µ±È»ÎÒÃÇ´´½¨µÄmavenÏîÄ¿µÄpom¶¼¼Ì³ÐmavenµÄsuper
pom£¬ Èç¹ûÏë¿´ÏîÄ¿(¸¸»ò×Ó)µÄÍêÈ«µÄpom½á¹¹£¬¿ÉÒÔÔËÐУº
mvn help:effective-pom
¾Í¿ÉÒÔÁË¡£
2.2.2. ×ÓÏîÄ¿ÅäÖÃ
<project> <modelVersion>4.0.0</modelVersion> <groupId>com.mygroup </groupId> <artifactId>my-child-project</artifactId> <parent> <groupId>com.mygroup </groupId> <artifactId>my-parent</artifactId> <version>2.0</version> <relativePath>../my-parent</relativePath> </parent> </project> |
2.3. ºÏ³É¹ØÏµ
Ò»¸öÏîÄ¿Óжà¸öÄ£¿é£¬Ò²½Ð×ö¶àÖØÄ£¿é£¬»òÕߺϳÉÏîÄ¿¡£ ÈçÏµĶ¨Ò壺
<project> <modelVersion>4.0.0</modelVersion> <groupId>com.mygroup </groupId> <artifactId>my-parent</artifactId> <version>2.0</version> <modules> <module>my-child-project1<module> <module>my-child-project2<module> </modules> </project> |
ÆäÖÐmodule ÃèÊöµÄÊÇ×ÓÏîÄ¿µÄÏà¶Ô·¾¶ ¡£
2.4. dependencyManagementºÍProfile
Maven »¹ÎÒÃÇÌṩÁËÒ»¸ödependencyManagementÔªËØ£¬ÓÃÀ´ÌṩÁËÒ»ÖÖ·½Ê½À´Í³Ò»ÒÀÀµ°æ±¾ºÅ¡£dependencyManagementÔªËØÒ»
°ãÓÃÔÚ¶¥²ãµÄ¸¸POM¡£Ê¹ÓÃpom.xmlÖеÄdependencyManagementÔªËØÄÜÈÃÄãÔÚ×ÓÏîÄ¿ÖÐÒýÓÃÒ»¸öÒÀÀµ¶ø²»ÓÃÏÔʽµÄÁгö°æ±¾ºÅ¡£
Maven»áÑØ×Ÿ¸×Ó²ã´ÎÏòÉÏ×ߣ¬Ö±µ½ÕÒµ½Ò»¸öÓµÓÐdependencyManagementÔªËØµÄÏîÄ¿£¬È»ºóËü¾Í»áʹÓÃÔÚÕâ¸ö
dependencyManagementÔªËØÖÐÖ¸¶¨µÄ°æ±¾ºÅ£¬ÕâÑù¾Í½â¾öÁËÐÞ¸ÄÒÀÀµ°æ±¾ºÅ²»ÍêÈ«µÄÎÊÌâ¡£
MavenµÄProfileÔªËØ¿ÉÒÔΪһ¸öÌØÊâµÄ»·¾³×Ô¶¨ÒåÒ»¸öÌØÊâµÄ¹¹½¨£¬Ê¹µÃ²»Í¬»·¾³¼ä¹¹½¨µÄ¿ÉÒÆÖ²ÐÔ³ÉΪ¿ÉÄÜ¡£±ÈÈçҪʹÓÃ
production profileÀ´ÔËÐÐmvn install£¬ÄãÐèÒªÔÚÃüÁîÐд«Èë-Pproduction²ÎÊý£¬ÕâÀïproductionÊÇprofileµÄid¡£ÒªÑéÖ¤production
profile¸²¸ÇÁËĬÈϵÄCompiler²å¼þÅäÖ㬿ÉÒÔÏñÕâÑùÒÔ¿ªÆôµ÷ÊÔÊäÈë(-X) µÄ·½Ê½ÔËÐÐMaven¡£
|