几个易忽视的maven知识点

两种跳过测试命令的区别
-Dmaven.test.skip =true
不执行测试用例,不编译测试代码(检查依赖)
NFO] --- maven-resources-plugin:3.0.2:testResources (default-testResources) @ mymaven ---
[INFO] Not copying test resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.7.0:testCompile (default-testCompile) @ mymaven ---
[INFO] Not compiling test sources
[INFO] 
[INFO] --- maven-surefire-plugin:2.21.0:test (default-test) @ mymaven ---
[INFO] Tests are skipped.
[INFO] 

-DskipTests
不执行测试用例,会编译测试代码生成class文件。
理解Manifest文件
  • Manifest文件描述了jar包的安全和配置信息。
  • 创建jar包时默认会创建Manifest.MF文件
  • MAIN-CLASS,指定加载jar的主类,例如Main-Class: com.xxx.Start
  • Class-Path,指定其他jar或者配置文件(目录),到当前jar包的classes目录下。指定此项配置可以避免启动时指定很长的-classpath配置。
  • manifestEntries标签能让我们额外指定属性到classpath下。

    org.apache.maven.plugins
    maven-jar-plugin
    
    
    2.6
    
        
            
                true
                lib/
                com.Start
            
            
                ./configs/
            
        
    

检查项目依赖
  • 在项目存在依赖冲突时,常用如下命令来分析解决。
  • 如果使用的是idea开发,可以安装一个maven helper插件来直观的看到依赖和解决冲突。
mvn dependency:tree
配置国内镜像库加速
  • 在settings.xml中配置如下镜像
 
        
            nexus-aliyun
            central
            Nexus aliyun
            http://maven.aliyun.com/nexus/content/groups/public/
        
    
根据不同环境打包
  • 在springboot中,可以通过指定spring.profiles.active来激活不同配置。
  • 如下两种方式效果相同。
--spring.profiles.active=dev,mysql
-Dspring.profiles.active=dev,mysql
  • maven中也可以通过配置profile来实现不同环境打包。
将jar包打入本地仓库的几种方式

1)mvn install:install-file -Dfile= -DpomFile=

案例:
mvn install:install-file -Dfile=H:\hyq.coding\mymaven\target\mymaven-1.0.jar\ 
-DpomFile=H:\hyq.coding\mymaven\pom.xml


2)mvn install:install-file -Dfile= -DgroupId= \
-DartifactId= -Dversion= -Dpackaging=
    
案例:
mvn install:install-file -Dfile=H:\hyq.coding\mymaven\target\mymaven-1.0.jar -DartifactId=mymaven \
-DgroupId=mymaven -Dpackaging=jar -Dversion=1.0

和的区别
  • 主要用在包含父子模块的maven工程中其作用如下:

    • 集中管理子模块的公共依赖。
    • 集中的version控制,即传递依赖。
    • 子类可以不用声明版本号。
    • 需要注意的是它不是类似继承,子类都会引入父工程申明的包,同样的,子类需要显示声明需要的依赖项目。且子类声明的version和scope优先级更高。
  • 在子模块中就是显示指定本模块需要的依赖

    • 在父模块中,则是会作为所有子模块的依赖项注入。

你可能感兴趣的:(maven笔记)