`
fhqibjg
  • 浏览: 55106 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

maven笔记

    博客分类:
  • java
阅读更多

 

学习时笔记,方法自己用时可查阅

资料

 

 

一,pop.xml编写
    1,在pop.xml中以下四个是基本的元素
            modelVsersion           这个在maven2及3来说一般只能是4.0.0
            groupId                     一般为工程名
            artifactId                   工程模块名
            version                     项目版本
 
二,代码目录强制规定
            主代码             : src/main/java/          包名一般与groupId和artifactId相吻合
            主代码资源文件 : src/main/resources/  放如果properties文件等
            默认web资源   : src/main/webapp/     放jsp,html,css

            测试代码                 :src/test/java/    包名一般与groupId和artifactId相吻合
            测试代码码资源文件  :src/test/resources


三,maven的主要命令
       1,常用
            mvn  clear
            mvn  test
            mvn  clear test
            mvn  compile
            mvn  clear compile
            mvn  package
            mvn  package install       当install比package多一个打包安装到本地仓库中
           
           2, 生成项目骨架
              maven 3
                 mvn archetype : generate
              maven 2
                 mvn org.apache.maven.plugins:maven-archetype-plugin:2.0-alpha-5:generate
                 实际上运行的是 groupId:artifactId:version:generate
              ... ...
              ... ...

              知识扩展:  按需构建多模块,玩转Maven反应堆

  
四,依赖关系
     1,dependencies结点下dependencie中包含的元素
          groupId,artifactId,version:这三个不再多说
          type         :  依赖的类型,对应项目坐标定义的packaging。大部分情况下,该元素不必声明 ,其默认值 为jar
          scope       :  依赖的范围
          optional    :  标记依赖是否可选
          exclusions : 用来排队传递性依赖

     2,依赖范围(用来控制依赖和三种classpath[编译,测试,运行])
          Compile   : 编译依赖范围,如果没有指定,则默认为此范围,且对于编译,测试,运行三种classpath都有效
          Test        : 这种依赖仅对于测试classpath有效。eg: JUnit
          Provided  : 己提供依赖范围,使用此依赖范围的Maven依赖,仅对于编译和测试classpath有效。eg:serlet-api
          Runtime   : 运行时依赖。这种依赖对于测试和运行有效。eg: JDBC驱动
          System    : 系统依赖。这种与Provided范围完全相同,但使用System范围的依赖时必须通过systemPath元素显示地指定 依赖文件的路径。由于此类依赖不是通过Maven仓库解析的,而且住住与本机系统绑定,可能造成不可移植,因 此应该谨慎使用。systemPath元素可以引用环境变量 需另加:<systemPath>${java.home}/lib/rt.jar</systemPath>

 

 

 

依赖范围 编译    测试    运行     例子
compile   Y Y Y spring-core
test        - Y - JUnit
provided Y Y - servlet-api
runtime - Y Y JDBC驱动
system Y Y - 本地,maven之外的文件

 

 

 

3,传递性依赖   【坚列为第一依赖关系,横项为第二依赖关系,交叉为传递关系】

 

  compile        test      provided        runtime  
compile   compile         - - runtime
test        test              - - test           
provided provided       - provided       provided     
runtime   runtime        - - runtime       

 

 
   4,依赖调解 (不同依赖可能引用相同jar包的不同版本,所以maven要排除情况【下面优先级从高到低】)
         4.1,路径优先原则(最短原则)
         4.2,  第一声明优先(pop.xml中依赖声明顺序,此只适用2.9级以后版本,以下的版本不确定)
 
  5,可选依赖
        定意      :项目A依赖于项目B,B依赖于项目C、D但对于C、D的依赖都是可选依赖,那么C、D对A没有任何影响。
        出现原因 :可能项目B实现了两种特性,一种依赖于C一种依赖于D,但是C与D的特性是互斥的,所以要配制可选。
        pop配制 :<optional>true</optional>
 
  6,排除依赖
        原因       : 可能项目有一个第三方依赖,而第三方依赖由于某些原因依赖了另外一个库的不稳定版本,这个不稳定版本可能 对项目产生不可预料的结果,所以要排除这个依赖。
        pop 配制 :  <exclusions> <exclusion> <groupId>xxx</groupId><artifactId>xxxx</artifactId> </exlusion></exlusions>



  7,归类依赖
       有些包的依赖它们来自同一项目的不同模块,因此它们的版本是一样的。所以可以考虑用
       <properties> <struts.version>2.6</struts.version></properties>   ${struts.version} 等来统一版本号

 8,优化依赖
      查看当前项目己解析的依赖:mvn dependency:list
      查看项目的依赖树            :mvn dependency:tree
      分析当前项目依赖            :mvn dependency:analyze

      打开maven的调式标记     :mvn install -X

 

 

====================2013=============================================

1,插件帮助信息

      1.1.1使用help:describe 目标来获取Maven插件的信息。通过 plugin 参数你可以指定你想要研究哪个插件,你可以传入插件的前缀(如help 插件就是 maven-help-plugin),或者可以是 groupId:artifact[:version] ,这里 version 是可选的。比如, 下面的命令使用 help 插件的 describe 目标来输出Maven Help 插件的信息。

mvn help:describe -Dplugin=help

 

      1.1.2 如果你想要 Help 插件输出完整的带有参数的目标列表,只要运行带有参数
full 的 help:describe 目标就可以了,像这样:

mvn help:describe -Dplugin=help -Dfull

 

        1.1.3 有时候这些信息显得太多了。这时候你可以获取单个目标的信息,设置 mojo 参数和 plugin 参数。下面的命令列出了Compiler 插件的 compile 目标的所有信息

$ mvn help:describe -Dplugin=compiler -Dmojo=compile -Dfull

 

   1.2maven基本插件用法

 

        1.2.1设置插件参数表达式

testFailureIgnore Set this to true to ignore a failure during testing. Its use * Type: boolean
* Required: No
* Expression: ${maven.test.failure.ignore}

    这个表达式可以从命令行通过 -D 参数设置。

$ mvn test -Dmaven.test.failure.ignore=true

 

       1.2.2想要配置 Maven 使其完全跳过单元测试。 可能你有一个很大的系统,单元测试需要花好多分钟来完成,而你不想在生成最终输出前等单元测试完成。只需要使用 Surefire 插件的 skip 参数。 在命令行,只要简单的给任何目标添加maven.test.skip 属性就能跳过测试:

 

$ mvn install -Dmaven.test.skip=true
...
[INFO] [compiler:testCompile]
[INFO] Not compiling test sources
[INFO] [surefire:test]
[INFO] Tests are skipped.

 pom.xml配制

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
					<skip>true</skip>
				</configuration>
			</plugin>
		</plugins>
	</build>

 

       1.2.3如果你正在实践测试驱动开发(TDD),你可能会使用测试失败来衡量你离项目完成有多远。 如果你有失败的单元测试,但你仍然希望产生构建输出,你就必须告诉 Maven 让它忽略测试失败。 当Maven 遇到一个测试失败,它默认的行为是停止当前的构建。 如果你希望继续构建项目,即使 Surefire 插件遇到了失败的单元测试,你就需要设置 Surefire 的testFailureIgnore 这个配置属性为 true。

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
					<testFailureIgnore>true</testFailureIgnore>
				</configuration>
			</plugin>
		</plugins>
	</build>

 

 2,pom关于配制数据连接与资源管理信息

 

   2.1 指定maven编译版本与开启pom文件中配制数据库连接

    

	<build>
	<!-- build后的war包名,如果没写则 artifactId.version.packaging -->
	<finalName>practice</finalName>

	<resources>
		<resource>
			<directory>src/main/resources</directory>
			<!-- 这里默认为false,为true时才支持pom.xml文件中配制数据连接信息生效 -->
			<filtering>false</filtering>
		</resource>
	</resources>
	<testResources>
		<testResource>
			<directory>src/test/resources</directory>
			<filtering>false</filtering>
		</testResource>
	</testResources>

    <!-- 编译版本 -->
	<plugins>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-compiler-plugin</artifactId>
			<configuration>
				<source>1.6</source>
				<target>1.6</target>
			</configuration>
		</plugin>
	</plugins>

	<pluginManagement>
		<plugins>
			<!--支持src/main/resouces下的二进制文件复制 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-resources-plugin</artifactId>
				<configuration>
					<nonFilteredFileExtensions>
						<nonFilteredFileExtension>dll</nonFilteredFileExtension>
						<nonFilteredFileExtension>so</nonFilteredFileExtension>
						<nonFilteredFileExtension>dylib</nonFilteredFileExtension>
					</nonFilteredFileExtensions>
				</configuration>
			</plugin>
		</plugins>
	</pluginManagement>
</build>

 

   2.2 配制打包时资料文件复制路径
<build>
	<resources>
		<resource>
			<!-- 此处可指定自定义的资料文件路径 -->
			<directory>src/main/java</directory>
			<filtering>false</filtering>
			<includes>
				<include>**/*.properties</include>
				<include>**/*.xml</include>
			</includes>
		</resource>
		<resource>
			<directory>src/main/resources</directory>
			<filtering>false</filtering>
			<includes>
				<include>**/*.properties</include>
				<include>**/*.xml</include>
			</includes>
		</resource>
	</resources>
</build>
 
分享到:
评论

相关推荐

    黑马maven笔记第二天

    ### 黑马Maven笔记第二天知识点总结 #### Maven的核心优势 **1. 统一管理JAR包** - **节省空间**:Maven通过中央仓库管理所有项目的依赖,避免了重复下载相同JAR包的问题,有效减少了硬盘空间的占用。 - **依赖...

    黑马maven笔记,第一天

    ### 黑马Maven笔记详解 #### Maven简介与特点 Maven是一款强大的项目管理和构建工具,作为Apache基金会下的一个开源项目,它完全采用Java语言编写,主要用于管理Java项目。Maven通过标准化项目构建过程和依赖管理...

    Maven笔记Maven笔记Maven笔记

    Maven的安装: (首先保证JDK版本在1.6以上) 1: 通过配置MAVEN_HOME 和 %% %MAVEN_HOME%\bin 然后进行mvn -version 测试 掌握 -Xms 与 -Xmx的相关配置 2: Maven目录分析: 2.1: bin: 含有mvn运行的脚本 2.2...

    Maven笔记.pdf

    ### Maven核心知识点解析 #### Maven概述与价值 Maven是一个项目管理和综合工具,主要用于Java项目的构建、依赖管理和项目信息管理。通过Maven,开发者可以轻松地处理项目中的多个痛点问题,提升开发效率。 #####...

    maven笔记:maven-overlay-实战笔记

    【标题】:“maven笔记:maven-overlay-实战笔记” 在 Maven 的世界里,"overlay" 是一个重要的概念,主要用于Web项目的构建和部署。Maven overlay 技术允许你将多个项目的输出“重叠”在一起,形成一个新的项目,...

    maven笔记t-JavaWeb

    【标题】"maven笔记t-JavaWeb"主要聚焦于Java Web开发中Maven的使用,这是一套关于Maven的教程,旨在帮助开发者理解和掌握这个强大的构建工具。Maven是Apache软件基金会的一个项目,它简化了Java项目的构建、管理和...

    maven笔记.zip

    ** Maven 概述 ** Maven 是一个强大的项目管理和构建工具,主要应用于Java项目。它通过提供一套标准化的构建过程,使得项目的...通过学习Maven笔记,开发者可以更好地掌握这一强大的工具,提升项目开发的专业水平。

    maven笔记.docx

    【Maven笔记】 Maven是一个强大的Java项目管理工具,它主要解决了在软件开发过程中遇到的一系列问题,如依赖管理、项目构建以及环境一致性等。通过使用Maven,开发者可以更高效地管理和构建Java项目,避免手动复制...

    Maven笔记(2)-- 构建Java Project 及 Maven命令使用

    **Maven笔记(2)-- 构建Java Project 及 Maven命令使用** Maven是Apache组织开发的一个项目管理和综合工具,主要用于Java项目构建、依赖管理和项目信息管理。它通过一个统一的构建过程,使得项目的构建变得简单且...

    Maven笔记.docx

    **Maven笔记** Maven是Apache组织开发的一款Java项目管理工具,它的主要功能包括项目构建、依赖管理和仓库管理。Maven使得Java开发更加规范和高效,尤其在大型团队协作中,能够有效地解决版本冲突和自动化构建的...

    尚硅谷Maven课程笔记代码资源

    【尚硅谷Maven课程笔记代码资源】是一份全面学习Maven的资料集合,它涵盖了从基础到高级的各种知识点,旨在帮助开发者深入理解并熟练运用Maven进行自动化构建。该资源包含课件、源码和相关的笔记,使得学习过程更加...

    Maven笔记与资料.zip

    压缩包中的"笔记"和"资料"文件可能包含更深入的Maven教程、最佳实践、常见问题解答和案例研究等内容。学习这些资料有助于提升你在实际项目中的Maven应用能力,解决遇到的问题,并优化构建流程。 综上所述,Maven是...

    maven学习笔记maven学习笔记

    maven学习笔记maven学习笔记maven学习笔记

    maven笔记+教案

    ** Maven详解:构建Java项目的专业工具 ** Maven是一个基于项目对象模型(Project Object Model,POM)的概念,用于管理并构建Java项目。它通过一个简单的配置文件(pom.xml),自动化项目的构建、报告和依赖管理,...

    Maven笔记,内包含Maven核心程序解压和配置,命令行环境,IDEA环境,jar包3下载失败问题的解决方案

    Maven笔记,内包含Maven核心程序解压和配置,命令行环境,IDEA环境,jar包3下载失败问题的解决方案

    java-Maven笔记.docx

    Maven 是 Java 项目中一种流行的构建工具,能够帮助开发者更好地管理项目依赖关系、编译、打包和发布。下面是 Maven 的一些知识点: 1. Maven 的必要性:Maven 之所以需要,是因为在没有 Maven 之前,开发者需要...

    Maven笔记1

    【Maven笔记1】—— Maven入门 Maven是一款强大的Java项目管理和构建工具,它解决了传统项目构建中的诸多痛点,使得Java开发变得更加规范和高效。在本文中,我们将深入探讨Maven的基本概念、功能以及如何解决上述...

Global site tag (gtag.js) - Google Analytics