ä»ç»
å¨å¤çWEBåºç¨çæ¶åï¼æç»ä½¿ç¨çå·¥ç¨æ件æ¯ä»¥Warå
çå½¢å¼äº¤ä»ãMavenç¼è¯ç³»ç»å¯ä»¥è½»æ¾çå建Warå
ãæ¥ä¸æ¥å°±è®©æ们ççMavenæ¯å¦ä½æä¸ä¸ªæºæ件çå·¥ç¨è½¬æ¢æWarå
çã
Maven çæ¬ Apache Maven 3.0.4
å·¥ç¨å®ä¾
让æ们æ¥ççè¿ä¸ªé常å
¸åçMavenåçWEBå·¥ç¨
对åºç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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>mygroup.com</groupId>
<artifactId>myprojectname</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>myprojectname Maven Webapp</name>
<url>
http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>myprojectname</finalName>
</build>
</project>
æ们ç¨æ¤å½ä»¤Warå
mvn package
C:\Projects\myprojectname>mvn package
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building myprojectname Maven Webapp 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
...
[INFO] --- maven-war-plugin:2.1.1:war (default-war) @ myprojectname ---
[INFO] Packaging webapp
[INFO] Assembling webapp [myprojectname] in [C:\Projects\myprojectname\target\myprojectname]
[INFO] Processing war project
[INFO] Copying webapp resources [C:\Projects\myprojectname\src\main\webapp]
[INFO] Webapp assembled in [18 msecs]
[INFO] Building war: C:\Projects\target\myprojectname.war
...
Warçæå¨æ ¹ç®å½ä¸
/target/myprojectname.war
å¦ä¸å¾ï¼æ¦åµMavençæWarå
è¿ç¨
Maven é»è®¤é
ç½®
æ们é½ç¥éMavenå¯ä»¥å¾å®¹æçææºæ件工ç¨å建为Warå
ï¼ä½æ¯POMæ件ä¸ä»ä¹ä¹æ²¡æ设置ãè¿æ¯æä¹åäºåï¼å®é
ä¸Mavenæèªå·±é»è®¤ç设置ãè¿ç§°ä¹ä¸º âconvention over configurationâï¼Mavenå¨é
ç½®ä¸æä¾é»è®¤å¼ã
第ä¸ï¼å 为æä¸äºMavenæ件æ¬èº«å°±ä¸Maven ççå½å¨æç»å®å¨ä¸èµ·ãä¾å¦ï¼å¨ç¼è¯é¶æ®µä½¿ç¨
compilerï¼compile ä½ä¸ºé»è®¤å½ä»¤ãè¿å°±æå³çå½æ§è¡å°ç¼è¯é¶æ®µcompiler plugin 被è°ç¨æ§è¡ãå¦æéæ©çæWARï¼é£ä¹ warï¼war ä¼ä¸è¿ä¸ªé¶æ®µç»å®ã
第äºï¼å½æ²¡ææ确设置åæ°çæ¶åï¼æ件é½ä¼æèªå·±é»è®¤å¼ãä¾å¦ compilerï¼compile ç®æ æ个åæ°æ¯ compilerIdãå½é»è®¤å¼æ¯ javacå°±æå³çJDK ä¼è¢«ä½¿ç¨ãå½éè¦çæå
¶ä»å½¢å¼æ¶å¯ä»¥éåæ¤é
ç½®ã
第ä¸ï¼ä¸äºè®¾ç½®å
å«å¨ Super POM,æ¤æ件æ¯POMæ件é»è®¤ç»§æ¿çãä»Mavne3 èµ· Super POM 被æ¾å¨
maven_dir/lib/maven-model-builder-3.0.3.jar:org/apache/maven/model/pom-4.0.0.xml
å¨è¿éæ们å¯ä»¥åç°å¾å¤é»è®¤çé
置信æ¯
<build>
<directory>${project.basedir}/target</directory>
<outputDirectory>${project.build.directory}/classes</outputDirectory>
<finalName>${project.artifactId}-${project.version}</finalName>
<testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory>
<sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
<scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
<testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>${project.basedir}/src/test/resources</directory>
</testResource>
</testResources>
...
</build>
Maven çå½å¨æ
å¨æ们çå·¥ç¨ä¸ï¼å½æ§è¡ mvn package å½ä»¤ï¼mavenä¼æ§è¡å®æ´ä¸ªçå½å¨æä¸çå
个é¶æ®µ
process-resources, compile, process-test-resources, test-compile, test and package
æ¯ä¸ªé¶æ®µä¼å
å«ä¸ä¸ªæå¤ä¸ªç®æ ãMaven æ件æä¾ç®æ ï¼ä¸ä¸ªæ件å¯ä»¥æä¸ä¸ªæå¤ä¸ªç®æ ãä¾å¦
Compiler æ件æ两个ç®æ ï¼compilerï¼compile å compilerï¼testCompile
æ们å¯ä»¥ä½¿ç¨ mvn helpï¼describe -Dcmd=phasename å½ä»¤ååºå¦ä¸å
容
C:\Project\myprojectname>mvn help:describe -Dcmd=package
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building myprojectname Maven Webapp 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-help-plugin:2.1.1:describe (default-cli) @ myprojectname ---
[INFO] 'package' is a phase corresponding to this plugin:
org.apache.maven.plugins:maven-war-plugin:2.1.1:war
It is a part of the lifecycle for the POM packaging 'war'. This lifecycle includes the following phases:
* validate: Not defined
* initialize: Not defined
* generate-sources: Not defined
* process-sources: Not defined
* generate-resources: Not defined
* process-resources: org.apache.maven.plugins:maven-resources-plugin:2.5:resources
* compile: org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile
* process-classes: Not defined
* generate-test-sources: Not defined
* process-test-sources: Not defined
* generate-test-resources: Not defined
* process-test-resources: org.apache.maven.plugins:maven-resources-plugin:2.5:testResources
* test-compile: org.apache.maven.plugins:maven-compiler-plugin:2.3.2:testCompile
* process-test-classes: Not defined
* test: org.apache.maven.plugins:maven-surefire-plugin:2.10:test
* prepare-package: Not defined
* package: org.apache.maven.plugins:maven-war-plugin:2.1.1:war
* pre-integration-test: Not defined
* integration-test: Not defined
* post-integration-test: Not defined
* verify: Not defined
* install: org.apache.maven.plugins:maven-install-plugin:2.3.1:install
* deploy: org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.496s
[INFO] Finished at: Sat May 12 04:30:35 CEST 2012
[INFO] Final Memory: 5M/121M
[INFO] ------------------------------------------------------------------------
ä¸é¢è®©æ们ççæ¯ä¸ªç®æ
1.resources:resources
æ¤ç®æ ç¨æ¥å°èµæºæ件夹ä¸çå
容æ·è´å°è¾åºç®å½
2.compilerï¼compile
æ¤ç®æ ç¼è¯æºé¡¹ç®å·¥ç¨
3.resources:testResources
æ¤ç®æ æ·è´æµè¯èµæºå°æµè¯è¾åºç®å½
4.compilerï¼testCompile
æ¤ç®æ ç¼è¯æµè¯é¡¹ç®
5.surefireï¼test
æ¤ç®æ æ§è¡å·¥ç¨çåå
æµè¯ï¼ç¼è¯çæµè¯ç±»æ¾å¨ /target/test-classes
6.warï¼war
æ¤ç®å½å建Warå
ãå®ä¼æææéè¦çæ件æ¾å¨
/target/myprojectname/
èåå°ä»ä»¬æå
çæ **.warãå
¶ä¸ä¸ä¸ªæ¥éª¤æ¯å°
/src/main/webapp/
æ·è´å°è¾åºç®å½ã
Waræ件å¦å¤ä¸ä¸ªéè¦æ¥éª¤æ¯æ·è´Classæ件å°å° WEB-INF/classesç®å½å项ç®æä¾èµçjarå
å° WEB-INF/libç®å½ã
é»è®¤æ
åµä¸ï¼æ件è¿å
å«ä¸¤ä¸ªMavenæè¿°æ件ï¼
META-INF/maven/${groupId}/${artifactId}/pom.xml
pom.properties æ件ï¼META-INF/maven/${groupId}/${artifactId}/pom.properties
#Generated by Maven #Sat May 12 00:50:42 CEST 2012 version=1.0-SNAPSHOT groupId=mygroup.com artifactId=myprojectname
æç»çWarå
æ¾å¨/target/ç®å½ä¸ã
项ç®ä¾èµ
pom.xmlæ件ä¼æä¸ä¸ªé»è®¤çï¼JUnitï¼ä¾èµãæ们å¯ä»¥å å¦å¤ä¸ä¸ªå¸¸ç¨çJar log4jã
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
å½æ²¡æ设置ä¾èµèå´ ï¼ scopeï¼ï¼é»è®¤ä¸º compile scopeãè¿å°±æå³çæ¤ä¾èµå¨ç¼è¯ãæµè¯ãè¿è¡é¶æ®µé½å¯ä»¥å¾å°ã
åªè¦æ¯è¿è¡ä¸ä¼ç¨å°çjarå
ï¼é½ä¼æ·è´å° /WEB-INF/libç®å½
http://my.oschina.net/u/939534/blog/173863