Maven学习笔记

1、可选依赖:

    可选依赖不会进行传递,例如:A—>B、B—>X(可选)、B—>Y(可选),那么对于A来说,X、Y都是A的可选依赖,依赖将不会得到传递,换句话来说,X、Y对A不会又任何影响,A不会像传递性依赖一样引入X、Y,传递性依赖的表示<optional>

<dependency>
  <groupId>com.ck</groupId>
  <artifactId>common-data</artifactId>
  <version>${common-data.version}</version>
  <optional>true</optional>
</dependency>

2、排除依赖:如果A依赖B,B又依赖C,那么根据传递性依赖,那么A会引入C如果想要排除C

<dependency>
   <groupId>org.thymeleaf</groupId>
   <artifactId>thymeleaf-spring4</artifactId>
   <version>${thymeleaf.version}</version>
   <exclusions>
      <exclusion>
        <artifactId>thymeleaf</artifactId>
        <groupId>org.thymeleaf</groupId>
      </exclusion>
   </exclusions>
</dependency>

3、归类依赖:设置统一版本号:

 <properties>
        <jackson-version>2.9.5</jackson-version>
 </properties>
<dependencies>
    <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-annotations</artifactId>
       <version>${jackson-version}</version>
     </dependency>
<dependencies>

4、优化依赖:

 查看当前项目已经解析依赖:mvn dependency:list

 查看当前项目依赖树:mvn dependency:true

 依赖分析:mvn dependency:analyze

Used undeclared dependencies found:这个是指项目中使用到的但是没有显示声明的依赖,然而是通过直接依赖传递过来的,也就是传递性依赖,当升级直接依赖的时候,相关传递性依赖的版本也可能发生变化,这种变化可能导致项目出错,因此,显示声明项目中直接用到的依赖

 Unused declared dependencies found:这个是项目中未使用的,但显示声明的依赖,这类依赖需要小心分析,因为依赖分析只能分析编译主代码和测试代码需要用到的依赖,一些执行测试和运行时需要的依赖它发现不了,对于分析后实在无用的依赖,确实可以直接删除;

5、maven仓库:

 分为本地仓库和远程仓库,远程仓库又分为私服和中央仓库、其它公共仓库;

 本地仓库:本地仓库地址的配置文件在settings.xml文件里面

<localRepository>D:\Users\xxx\.m2\repository\</localRepository>

一般项目构建时先从本地仓库查看依赖构件,如果查不到则从远程仓库搜索构建,如果远程仓库也查不到构建则会报错,如果本地项目有A、B,A项目依赖B项目,那么可以先使用将B项目打包(打包命令 mvn clean install)放到本地仓库,然后A项目就可以依赖使用B项目;

6、配置认证信息:settings.xml

<servers>
		<server>
			<id>releases</id>
			<username>xxx</username>
			<password>xxxx</password>
		</server>
		<server>
			<id>snapshots</id>
			<username>xxxx</username>
			<password>xxxxx</password>
		</server>
 </servers>

最关键的是id,这个id和远程仓库的id必须一致;

7、部署至远程仓库:

pom.xml文件配置:
 

<distributionManagement>
        <repository>
            <id>xx</id>
            <name>xxx</name>
            <url>http://localhost:8080</url>
        </repository>
</distributionManagement>

id是该远程仓库的唯一标识,name是用户任取的,url表示该仓库的地址往远程仓库部署的时候一般需要认证,前面已经说过了,执行命令:mvn clean deploy,将构建部署到远程仓库;

8、镜像:镜像可以看成是仓库的代理,所有能从仓库获取的构件都可以从镜像获取到,而且速度更快;

setting.xml配置文件:

<mirrors>
  <mirror>
     <id>xxxx</id>
	 <mirrorOf>center</mirrorOf>
     <name>public</name>
     <url>http://xxx</url>
  </mirror>
</mirrors>

<mirrorOf>的值为center,代表该镜像配置为中央仓库的镜像,任何对于中央仓库的请求都会转至该镜像,如果要代理所有仓库,那么就将值配置为*,另外三个元素id、name、url与一般仓库无异,类似的如果该镜像需要认证,也可以基于该id配置仓库认证。

9、maven插件:

查看插件信息命令:mvn help:describe -Dplugin=org.apache.maven.plugins:maven-compiler-plugin

查看项目依赖list:mvn dependency:list

查看项目依赖树:mvn:dependency:tree

插件的远程仓库配置:

<pluginRepositories>
	<pluginRepository>
		<id>xxxx</id>
		<url>http://xxxx</url>
		<releases>
			<enabled>true</enabled>
			<checksumPolicy>warn</checksumPolicy>
			</releases>
			<snapshots>
			<enabled>true</enabled>
			<updatePolicy>always</updatePolicy>
			<checksumPolicy>fail</checksumPolicy>
			</snapshots>
	</pluginRepository>
</pluginRepositories>

我们在配置插件的时候,经常看见插件没有配置groupId,如下所示:

 <plugin>
     <artifactId>maven-eclipse-plugin</artifactId>
     <version>2.9</version>
 </plugin>

这是因为maven在解析插件的时候,如果没有发现groupId,会自动用默认的groupId, org.apache.maven.plugins补齐,当没有配置版本号的时候,核心插件会在超级pom种设定版本,例如maven-clean-plugin。 对于非核心pom,maven2的策略是使用latest版本,这个版本可能是快照版本,不是很稳定,maven3的策略是使用release版本,这样可以避免由于快照频繁更新而导致的插件行为不稳定;

10、Maven版本号的定义:

格式:<主版本>.<次版本>.<增量版本>-<里程碑版本>

例如:1.3.4-beta-2 解释:1表示第一次重大版本,3表示大版本下的第三个次要版本,4表示此版本的第四次增量,最后的beta-2表示此版本的一个里程碑,一般的主版本、次版本是必须要的;

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值