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文件 |
|