1、形式引用属性(值的占位符)

  • env.propertyName:系统的环境变量
  • java.propertyNameJava的系统属性。java.lang.System.getProperties()能获取到的属性,pom中同样可以引用
  • settings.propertyNameMaven本地配置文件settings.xmlsettings根元素下的属性
  • project.propertyName:当前pom文件中project根元素下的属性
  • 自定义<properties>:自定义<properties>属性中的属性

例如

  1. // 系统环境变量PATH
  2. ${env.PATH}
  3. // Java系统属性home
  4. ${java.home}
  5. // settings文件的localRepository
  6. ${settings.localRepository}
  7. // project中version
  8. ${project.version}
  9. // 自定义<properties>
  10. ${maven.compiler.source}

2、执行 main 方法

  1. # 执行指定全限定名下的java类
  2. mvn exec:java -Dexec.mainClass="xxx.xxx.xxx.XXX"

3、Settings 文件

  1. <settings>
  2. <!-- 本地仓库的地址,存放jar包-->
  3. <localRepository>${user.home}/.m2</localRepository>
  4. <mirrors>
  5. <mirror>
  6. <id>nexus-aliyun</id>
  7. <mirrorOf>central</mirrorOf>
  8. <name>Nexus aliyun</name>
  9. <url>http://maven.aliyun.com/nexus/content/groups/public</url>
  10. </mirror>
  11. </mirrors>
  12. </settings>

4、命令参数

4.1、-D 传入参数

  1. # 执行打包操作时,跳过单元测试
  2. mvn package -Dmaven.test.skip=true

4.2、-P 使用指定的 Profile 配置

首先,假设pom.xml文件配置如下

  1. <!--打包环境配置:开发环境 测试环境 正式环境-->
  2. <profiles>
  3. <profile>
  4. <id>dev</id>
  5. <properties>
  6. <env>dev</env>
  7. </properties>
  8. <!--未指定环境时,默认打包dev环境-->
  9. <activation>
  10. <activeByDefault>true</activeByDefault>
  11. </activation>
  12. </profile>
  13. <profile>
  14. <id>test</id>
  15. <properties>
  16. <env>test</env>
  17. </properties>
  18. </profile>
  19. <profile>
  20. <id>prod</id>
  21. <properties>
  22. <env>prod</env>
  23. </properties>
  24. </profile>
  25. </profiles>
  26. <build>
  27. <!--对于项目资源文件的配置放在build中-->
  28. <resources>
  29. <resource>
  30. <directory>src/main/resources/${env}</directory>
  31. </resource>
  32. <resource>
  33. <directory>src/main/java</directory>
  34. <includes>
  35. <include>**/*.xml</include>
  36. <include>**/*.properties</include>
  37. <include>**/*.tld</include>
  38. </includes>
  39. <filtering>false</filtering>
  40. </resource>
  41. </resources>
  42. </build>

此时,使用命令,标识打包本地环境,并跳过单元测试

  1. mvn package -Pdev -Dmaven.test.skip=true

5、Web 插件

5.1、Jetty 插件

  1. <build>
  2. <finalName>Demo</finalName>
  3. <plugins>
  4. <plugin>
  5. <groupId>org.mortbay.jetty</groupId>
  6. <artifactId>maven-jetty-plugin</artifactId>
  7. <version>6.1.25</version>
  8. <configuration>
  9. <!--热部署,每10秒扫描一次-->
  10. <scanIntervalseconds>10</scanIntervalseconds>
  11. <!--可指定当前项目的站点名-->
  12. <contextPath>/test</contextPath>
  13. <connectors>
  14. <connector implementation="org.mortbay.jetty.nio.selectchannelconnector">
  15. <!--设置启动的端口号-->
  16. <port>9090</port>
  17. </connector>
  18. </connectors>
  19. </configuration>
  20. </plugin>
  21. </plugins>
  22. </build>

5.2、Tomcat 插件

  1. <build>
  2. <finalName>Demo</finalName>
  3. <plugins>
  4. <plugin>
  5. <groupId>org.apache.tomcat.maven</groupId>
  6. <artifactId>tomcat7-maven-plugin</artifactId>
  7. <version>2.1</version>
  8. <configuration>
  9. <!--启动端口默认:8080-->
  10. <port>8081</port>
  11. <!--项目的站点名,即对外访问路径-->
  12. <path>/test</path>
  13. <!--字符集编码默认:ISO-8859-1-->
  14. <uriEncoding>UTF-8</uriEncoding>
  15. <!--服务器名称-->
  16. <server>tomcat7</server>
  17. </configuration>
  18. </plugin>
  19. </plugins>
  20. </build>

6、Maven 仓库

6.1、私服

私服的在maven中的配置

  1. <repositories>
  2. <repository>
  3. <snapshots>
  4. <enabled>true</enabled>
  5. </snapshots>
  6. <id>public</id>
  7. <name>Public Repositories</name>
  8. <url>http://192.168.0.96:8081/content/groups/public/</url>
  9. </repository>
  10. <repository>
  11. <id>getui-nexus</id>
  12. <url>http://mvn.gt.igexin.com/nexus/content/repositories/releases/</ur1>
  13. </repository>
  14. </repositories>

私服的好处

  • 降低中央仓库的负荷
  • 节省自己的外网带宽
  • 加速maven构建
  • 提高稳定性
  • 部署第三方控件

6.2、其他公共库

  1. <mirror>
  2. <id>nexus-aliyun</id>
  3. <mirrorOf>central</mirrorOf>
  4. <name>Nexus aliyun</name>
  5. <url>http://maven.aliyun.com/nexus/content/groups/public</url>
  6. </mirror>