Maven_使用和注意事项

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/it_lihongmin/article/details/77618759

一、pom.xml常用配置详解

        1、<modelVersion>4.0.0</modelVersion> 与超级pom.xml的版本一致

        2、groupId 公司域名的倒写

        3、artifactId 功能名称

        4、version  版本号

        5、packaging 打包的格式,默认jar 可选项:war 、maven-plugin

        6、properties 项目属性配置,一般设置公用的配置信息

        7、dependencyManagement 

              1)只出现在父pom中

              2)统一版本号

              3)声明

        8、dependency 依赖

              1)下面经常会设置groupId 、artifactId 、version  

              2)type 默认为jar

              3)scope 默认值为compile(1、什么时候用 2、会打到jar包里面去吗)

                    a)compile 编译   大多数都是compile类型

                    b)test 测试 例如:junit

                    c)provided 编译但是不会打包 例如:servlet-api包,一般情况下tomcat下会有servlet-api的jar包,

                                         但是编译的时候很多时候需要引入该包,否则编译会报错

                    d)runtime 运行时 ,编译的时候可以不使用但是会打到jar包中,例如:mysql的驱动jar 至少jdbc的实现,运行时才会使用

                    e)system 本地的一些jar包,不在中央仓库中,一般是自己写的一些jar,但是鉴于放到中央仓库,方便项目复用。

                         一般自己写的jar想引入项目:1、放到私服中 2、install到本地仓库 3、classPath方式 

                         4、scope设置为system,并且设置systemPath即classPath的地址

             4)exclusions 排除包 例如:常用的就是spring核心包中的日志框架,一般不使用

                   

                 <dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>${spring.version}</version>
			<exclusions>
				<exclusion>
					<groupId>commons-logging</groupId>
					<artifactId>commons-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

二、依赖传递

        1、依赖传递性,比如子pom可以引用父pom。

        2、scope的依赖传递

          

        3)依赖仲裁

            a)最短路径原则  由下往上进行查找,路径最短,

                  i)在项目中需要知道自己的jar包依赖关系,

                  运行命令,mvn dependency:tree >dependency_tree.txt 则会在项目目录下生成依赖关系文件,也是发生冲突的很好的查找方式

                  ii)若想修改父pom的version信息,下面的子pom文件又会比较多(没有全局修改器),可引入插件,执行命令 

                      mvn versions:set -Dnewversion=1.1-SHATSHOT

         <build>
		<outputDirectory>${project.basedir}/src/main/webapp/WEB-INF/classes/</outputDirectory>
		<plugins>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>version-maven-plugin</artifactId>
				<version>2.3</version>
			</plugin>
		</plugins>
	</build>

            b)加载先后顺序原则(相通路径的情况下,则可以看一下pom中的书写顺序)


三、生命周期

       

        1)生命周期包含三个部分:clean、default、site

        2)每个生命周期(lifecyle)包含多个阶段(phase)

        3)插件可以指定在生命周期的每个phase运行,并指定多个目标如下:

<!-- 打包jar文件时,配置manifest文件,加入lib包的jar依赖 -->
<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-jar-plugin</artifactId>
	<version>2.4</version>
	<configuration>
		<encoding>${project.build.sourceEncoding}</encoding>
	</configuration>
	<!-- <executions>
		<execution>
			<phase>prepare-package</phase>
			<goals>
				<goal>jar</goal>
			</goals>
			<configuration>
				<classesDirectory>${project.outputDirectory}</classesDirectory>
				<finalName>jeesite</finalName>
				<outputDirectory>${project.build.directory}/${project.artifactId}/WEB-INF/lib</outputDirectory>
				<includes>
		        	<include>com/thinkgem/jeesite/**</include>
		       	</includes>
			</configuration>
		</execution>
	</executions> -->
</plugin>

四、版本控制

        1、1.0SNAPSHOT 开发版本(与1.0.0-RELAESE稳定版本对应),若不清楚依赖的版本(可能跨部门,已经进行升级),解决方式

             a)将本地仓库的repository 进行删除

             b)mvn clean package -U (强行去远程拉取一次)

        2、版本设置

              1.0.0-RELEASE 分别为: 主版本号.次版本号.增量版本号-历程碑版本


五、Maven常用命令

      maven命令执行的模块的顺序为:编写顺序和依赖关系的综合结果

        1、compile  编译 

        2、clean 删除target目录

        3、test 一般在不会下载该插件,但是运行的时候会再去下载 

        4、packaging 打包

        5、install 把项目install到local repository

        6、deploy 发本地jar包发布到remote





没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试