两种跳过测试命令的区别
-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优先级更高。
-
在子模块中就是显示指定本模块需要的依赖
- 在父模块中,则是会作为所有子模块的依赖项注入。