maven 碎碎念

1.pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project>

	<modelVersion>4.0.0</modelVersion>			//设置POM version, 固定设定该值为4.0.0

	<groupId>com.company.coffee</groupId>		//项目组织
	<artifactId>coffeeHome</artifactId>			//项目名称
	<version>1.0-SNAPSHOT</version>				//项目版本
	<packaging>pom</packaging>					//打包方式, 父项目为pom
												//子项目定义为jar、war, 默认jar
	<dependencies>coffeeHome</dependencies>		//项目描述


	<modules>
		<module>biz</module>
		<module>web</module>
		<module>dal</module>					//本项目pom packaging需设置为pom
		<module>bundle-war</module>				//引入子项目绝对路径
		<module>common</module>
		<module>commontest</module>
	</modules>

	<properties>
		//定义变量, 统一管理, 特别在引入一堆包的时候, 例如spring...
		<spring_version>3.0.6.RELEASE</webx_version>
	</properties>
	
	<dependencyManagement>
		//集中管理依赖版本, 子pom中只需要添加依赖, 自动向父方向寻找dependencyManagement中的版本
		<dependencies>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-aop</artifactId>
				<version>${spring_version}</version>
				<scope>compile</scope>
				<optional>true</optional>		//可选依赖, 传递依赖的时候不引入
				<exclusions>					//排除依赖, 传递依赖的时候删除
					<exclusion>
						<groupId>org.springframewor</groupId>
						<artifactId>xxx</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<dependencies>
		//这里的依赖直接被所有的子项目继承
		<dependency>
			......
		</dependency>
	</dependencies>

	<build>
		<resources>
		//引入自己的源代码路径
			<resource>
				<directory>src/config/resources</directory>
			</resource>
		</resources>
		<plugins>
			<plugin>
				//编译java类时支持泛型
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.0.2</version>
				<configuration>
					<source>1.5</source>
					<target>1.5</target>
				</configuration>
			</plugin>

			<plugin>
				//单元测试
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
					<testFailureIgnore>true</testFailureIgnore>
					<testNGArtifactName>com.alibaba.external:test.testng.jdk15
					</testNGArtifactName>
				</configuration>
			</plugin>

			<plugin>
				//单元测试覆盖率
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>cobertura-maven-plugin</artifactId>
				<version>2.5.1</version>
				<configuration>
					<formats>
						<format>xml</format>
						<format>html</format>
					</formats>
				</configuration>
				<executions>
					<execution>
						<phase>install</phase>
						<goals>
							<goal>cobertura</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>


2.dependencies 与 dependencyManagement 

dependencyManagement 多用于在父工程中引入依赖,并制定version、scope,子工程使用的时候只需要引入依赖,可以自动继承父工程中指定的version、scope

直接通过 dependencies 引入的依赖完全被子工程继承,不需要子工程再引入。

若子工程指定version,子工程直接引入该版本。

若子工程引入依赖且未指定版本,到父工程寻找dependencyManagement 中指定的版本。

若子工程未引入依赖,除非父工程直接dependencies 引入依赖,子工程才会引入依赖。


3.scope 定义依赖范围

compile:      编译、测试、运行有效

test:           测试有效,例如 junit

provided:     编译、测试有效,运行无效,例如 servlet-api

runtime:      编译无效,测试、运行有效 JDBC驱动实现

system:      本地环境上的依赖


4.可选依赖和排除依赖

可选依赖:在dependency 中加入<optional>true</optional>

       作用,A project pom 中对依赖B加了optional,则C在依赖A的时候对B的传递依赖失效,不引入B

排除依赖:在dependency 中加入 <exclusions><exclusion>  ...  </exclusion></exclusions>

       作用,引入依赖的时候删除<exclusion>中指定的依赖

       可以理解为可选依赖是在构建一个工具类项目pom时使用,对外提供服务的时候不至于使被服务者依赖太多,排除依赖是构建一个应用项目pom是使用,在使用依赖服务的时候删除一些不需要的依赖

       查看依赖

       依赖列表    mvn dependency:list

       依赖树       mvn dependency:tree

       依赖分析    mvn dependency:analyze


5.maven 的一些插件和简单命令

      cobertura 单元测试覆盖率  mvn cobertura:cobertura

      findbugs 静态检查java代码 mvn findbugs:findbugs

mvn jar:jar              打包成jar格式

mvn war:war            打包成war格式

  mvn compile             编译源代码

  mvn test-compile       编译测试源代码

  mvn test                  运行应用程序中的单元测试

  mvn site                  生成项目相关信息的网站

  mvn clean                清除项目目录中的生成结果

  mvn package            根据项目中的配置打包

  mvn install               将生成的包发布到本地仓库

     mvn eclipse:eclipse    生成eclipse项目文件

     mvn eclipse:clean      删除eclipse项目文件和classpath文件

创建一个maven工程

mvn archetype:create -DgroupId=com.company.coffee -DartifactId=coffeeHome -Dversion=1.0-SNAPSHOT -Dpackage=com.company.coffee.coffeeHome

你可能感兴趣的:(maven 碎碎念)