几个易忽视的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下。
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <!-- maven jar3.0.0打包会在manifest中加入包名 换成2.6 -->
    <!--<version>3.0.0</version>-->
    <version>2.6</version>
    <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <classpathPrefix>lib/</classpathPrefix>
                <mainClass>com.Start</mainClass>
            </manifest>
            <manifestEntries>
                <Class-Path>./configs/</Class-Path>
            </manifestEntries>
        </archive>
    </configuration>
</plugin>
检查项目依赖
  • 在项目存在依赖冲突时,常用如下命令来分析解决。
  • 如果使用的是idea开发,可以安装一个maven helper插件来直观的看到依赖和解决冲突。
mvn dependency:tree
配置国内镜像库加速
  • 在settings.xml中配置如下镜像
 <mirrors>
        <mirror>
            <id>nexus-aliyun</id>
            <mirrorOf>central</mirrorOf>
            <name>Nexus aliyun</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        </mirror>
    </mirrors>
根据不同环境打包
  • 在springboot中,可以通过指定spring.profiles.active来激活不同配置。
  • 如下两种方式效果相同。
--spring.profiles.active=dev,mysql
-Dspring.profiles.active=dev,mysql
  • maven中也可以通过配置profile来实现不同环境打包。
将jar包打入本地仓库的几种方式

1)mvn install:install-file -Dfile=<jar包路径> -DpomFile=<pom文件路径>

案例:
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=<path-to-file> -DgroupId=<group-id> \
-DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
    
案例:
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优先级更高。
  • 在子模块中就是显示指定本模块需要的依赖

    • 在父模块中,则是会作为所有子模块的依赖项注入。
发布了106 篇原创文章 · 获赞 21 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/u012811805/article/details/85041144