maven 安装插件
打包源代码插件demo
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
maven 远程发布
<distributionManagement>
<snapshotRepository>
<id>user-snapshot</id>
<name>user-snapshot</name>
<url>http://192.168.0.105:8081/nexus/content/repositories/user/</url>
</snapshotRepository>
</distributionManagement>
maven 配置私服的用户名和密码
<server>
<id>mvc-snapshot</id>
<username>sharp</username>
<password>123456</password>
</server>
<server>
<id>user-snapshot</id>
<username>sharp</username>
<password>123456</password>
</server>
maven 聚合管理
<modules>
<module>../mvc-core</module>
<module>../mvc-dao</module>
<module>../mvc-service</module>
<module>../mvc-log</module>
</modules>
maven 配置镜像
<mirror>
<id>sharp</id>
<mirrorOf>*</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://192.168.0.105:8081/nexus/content/groups/public/</url>
</mirror>
maven 配置依赖管理
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit-version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>mvc-core</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>mvc-dao</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>mvc-service</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>mvc-log</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.1.Final</version>
</dependency>
</dependencies>
</dependencyManagement>
maven 配置继承关系
<parent>
<groupId>com.sharp.mvc</groupId>
<artifactId>mvc-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../mvc-parent/pom.xml</relativePath>
</parent>
maven 配置jsp和 servlet 依赖
<dependency>
<groupId>servletapi</groupId>
<artifactId>servletapi</artifactId>
<version>2.4-20040521</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2.1-b03</version>
<scope>provided</scope>
</dependency>
配置jetty
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
</plugin>
<!-- <plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven2-plugin</artifactId>
<configuration> 配置Tomcat在本地的路径 <container> <containerId>tomcat6x</containerId>
<home>D:\Tomcat6.0</home> </container> 配置容器信息 <configuration> statndalone表示独立运行,此时会在特定的目录加载一个相应的web项目,
不会加载tomcat中原有的项目 <type>standalone</type> 希望加载路径的目录 <home>D:/webservice/tomcat6</home>
properties中可以设置相应的端口的配置 <properties> 端口号设置7676为 <cargo.servlet.port>7676</cargo.servlet.port>
</properties> </configuration> </configuration> </plugin> -->
<!-- <plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven2-plugin</artifactId>
基于existing的方式,会把项目发布到系统的Tomcat中的webapps中 <configuration> <container> <containerId>tomcat6x</containerId>
<home>D:\Tomcat6.0</home> </container> <configuration> home设置为系统的tomcat目录
<type>existing</type> <home>D:\Tomcat6.0</home> </configuration> </configuration>
</plugin> -->
</plugins>
配置tomcat
<build>
<finalName>mvc-user</finalName>
<plugins>
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<configuration>
<!-- 配置Tomcat在本地的路径 -->
<container>
<containerId>tomcat6x</containerId>
<home>D:\tomcat_6.0</home>
</container>
<!-- 配置容器信息 -->
<!--<configuration>
statndalone表示独立运行,此时会在特定的目录加载一个相应的web项目,
不会加载tomcat中原有的项目
<type>standalone</type>
希望加载路径的目录
<home>D:/tomcat_6.0/blank</home>
properties中可以设置相应的端口的配置
<properties>
端口号设置7676为
<cargo.servlet.port>7676</cargo.servlet.port>
</properties>
</configuration>
--></configuration>
</plugin>
<!--<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
基于existing的方式,会把项目发布到系统的Tomcat中的webapps中
<configuration>
<container>
<containerId>tomcat6x</containerId>
<home>D:\tomcat_6.0</home>
</container>
<configuration>
home设置为系统的tomcat目录
<type>existing</type>
<home>D:\tomcat_6.0</home>
</configuration>
</configuration>
</plugin>
--></plugins>
</build>
Maven的最重要的Default生命周期,绝大部分工作都发生在这个生命周期中,这里,我只解释一些比较重要和常用的阶段:
- validate
- generate-sources
- process-sources
- generate-resources
- process-resources 复制并处理资源文件,至目标目录,准备打包。
- compile 编译项目的源代码。
- process-classes
- generate-test-sources
- process-test-sources
- generate-test-resources
- process-test-resources 复制并处理资源文件,至目标测试目录。
- test-compile 编译测试源代码。
- process-test-classes
- test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。
- prepare-package
- package 接受编译好的代码,打包成可发布的格式,如 JAR 。
- pre-integration-test
- integration-test
- post-integration-test
- verify
- install 将包安装至本地仓库,以让其它项目依赖。
- deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享。
记住,运行任何一个阶段的时候,它前面的所有阶段都会被运行,这也就是为什么我们运行mvn install的时候,代码会被编译,测试,打包。
个人理解 :
这些生命周期相当于一系列默认插件的执行顺序,你输入其中的一个插件前缀名称(compiler),就相当于从开始目标(validate)执行到该插件最后一个目标(testCompile),后面如果加目标(goal)就表示只执行该插件,
例如clean compiler:compile 只执行clean 插件和compiler:compile插件,不会执行compiler:test-compile
执行命令的两种方式:
一种用prefixgoal+goal,另一种是phase