分享

MVN学习笔记

 无衍 2013-11-25
mvn学习笔记1


1 mvn -v查看版本

2 设置代理
   编辑settings.xml文件
   <proxies>
   <proxy>
       <id>abc</id>
       <active>true</active>
      <protocol>http</protocol>
        <host> </host>
     <port></port>
      <username>...</username>
    <password>....</password>
     <nonProxyHosts>.....</nonProxyHosts>
     </proxy>

</proxies>
   nonproxyhosts指定哪些主机名不使用代理


3   mvn clean install会把生成的jar打包到MAVEN的本地仓库中
4  在dependency中,当<scope>为test时,说明该依赖包只会加入到测试代码中去

5 maven的编译依赖范围:
   compile:默认使用该依赖,对编译,测试,运行三种classpath 都有效
   test: 只对测试时有效,如junit
   provided:在运行时无效,对编译和测试有效,如servlet-api
   runtime:如JDBC,对测试和运行有效,在编译时无效
6 归类依赖
   比如spring下的很多模块,都是同一个项目的,版本都相同,则为了优化,可以这样,

先定义一个<properties>项,即
   <properties>
   <abc>1.0</abc>
</properties>
  
    然后其他的dependcy中,可以这样
     <version>${abc}</version>

7 mvn dependency:list
   可以看到当前项目已解析的依赖
   mvn dependency:tree  看到依赖树
    mvn dependency:analyse 查看依赖的工具
8 MVN的仓库
    MVN仓库的路径形式为groupId/artifactId/version/articatId-version.packagin
  仓库分为本地仓库和远程仓库
    本地仓库的路径修改,可以修改settings.xml
   <settings>
    <localRepository>d:\java\......</localRepository>
</settings>

9 MVN的生命周期:clean(清理项目),default是构建项目,site是建立项目站点

10 命令行与生命周期
    mvn clean
      mvn test
    mvn clean install
     mvn clean deploy site-depoly

    MVN的插件和目标对应的关系   dependcy:analyze 冒号前面是插件前缀,冒号后面是

插件的目标
 

11 聚合
   当想一次过构建多个模块时,可以使用聚合,关系是包含和被包含的关系:
   <modules>
      <module>..  </module>
       <module>.....</module>
</modules>
12 继承
   抽取一个parent.pom,比如:
   <project xmlns="http://maven./POM/4.0.0"

xmlns:xsi="http://www./2001/XMLSchema-instance"
xsi:schemaLocation="http://maven./POM/4.0.0

http://maven./maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.juvenxu.mvnbook.account</groupId>
<artifactId>account-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Account Parent</name>
<properties>
<springframework.version>2.5.6</springframework.version>
<junit.version>4.7</junit.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<pluginManagement>
<plugins>
<plugin>


<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-

plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<plugin>


<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-

plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
   这里有定义了父的依赖和插件。而子的继承则变为:
<parent>
<groupId>com.juvenxu.mvnbook.account</groupId>
<artifactId>account-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../account-parent/pom.xml</relativePath>
</parent>
。。。。这里定义具体的依赖,其依赖不需要版本号了,比如这样:
  <dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
       </dependencies>



13 剪裁反应堆
   比如多个模块的话,有可能只是选取其中的某些部分:
  比如mvn-aggragtor下有mvn-email,mvn-parent,mvn-persist,mvn-email依赖mvn-

parent,则
  mvn clean install -pl account-email -am
-pl:构建指定的模块,模块间用逗号分割 -am:同时构健模块的所依赖的模块


14 默认情况下,maven-surefile-plugin的test目标会自动执行测试
src/test/java下的一组命名模式的测试类,该组模式为
   **/Test*.java:
   **/*Test.java:
   **/*TestCase.java:
  跳过测试:mvn package-DskipTests
  跳过测试代码的编译:  mvn package-Dmaven.test.skip=true
15 只运行指定的测试:
   mvn test-Dtest=类名
    匹配
   mvn test-Dtest=Random*Test
   在pom中,可以自动运行以Tests结尾的测试类
       <plugin>
   <configuration>
     <includes>
     <include>**/*Tests.java</include>
    </includes>
    同样可以用<excludes><exclude>去排除运行测试的类

16 测试覆盖率报告
   mvn跟开源测试覆盖率统计工具 合成,比如
   mvn cobertura:cobertura
  之后在target/site/cobertura下看到index.html文件

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多