①maven常用命令:
mvn clean:清除target下编译生成的class文件
mvn compile:编译
mvn package:打包放到target下
mvn install:打包并放到本地仓库
mvn deploy:打包并放到私服上。
mvn source:把项目源码放到私服上。
放到私服上需要在setting.xml(<servers></servers>标签中)或者pom.xml中配私服,配置时需要配上私服的用户名,密码,才能放上去。
install放到本地仓库的包,除了生成的jar,还有pom文件,如下:
<!--install打印ID日志:-->
[INFO] Installing C:\workspaceAll\eclipseWorkspace\activiti-demo\target\activiti-demo-0.0.1-SNAPSHOT.jar to G:\.m2\repository\com\example\activiti-demo\0.0.1-SNAPSHOT\activiti-demo-0.0.1-SNAPSHOT.jar
[INFO] Installing C:\workspaceAll\eclipseWorkspace\activiti-demo\pom.xml to G:\.m2\repository\com\example\activiti-demo\0.0.1-SNAPSHOT\activiti-demo-0.0.1-SNAPSHOT.pom
[INFO] Installing C:\workspaceAll\eclipseWorkspace\activiti-demo\target\activiti-demo-0.0.1-SNAPSHOT-jar-with-dependencies.jar to G:\.m2\repository\com\example\activiti-demo\0.0.1-SNAPSHOT\activiti-demo-0.0.1-SNAPSHOT-jar-with-dependencies.jar
放到本地仓库的:
项目打包放到私服,不仅仅是把打成的jar包copy过去,而是上图中生成的文件都需要放。
要么配置好,deploy命令直接放到私服上。要么在本地install,把生成的整个包都传到私服上。
如果放到私服的包只有jar,那么使用私服的时候就会报错。因为需要根据pom文件去查找下载引用的jar, 如果没有pom,jar中引用的包不会下载,项目就会报错。
比如:spring-boot-starter-thymeleaf这个jar中引用了thymeleaf:
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
<version>${thymeleaf.version}</version>
</dependency>
但是私服上spring-boot-starter-thymeleaf这个包只有jar,没有pom文件。所以,项目在download时,就只下载spring-boot-starter-thymeleaf,不会下载thymeleaf。导致项目报错。
打开本地仓库spring-boot-starter-thymeleaf所在位置:
这个pom文件的内容是私服自动生成的,不含depencies的:
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<version>1.5.9.RELEASE</version>
<description>POM was created by Sonatype Nexus</description>
</project>
无法根据这个pom去下载依赖的jar
②发布版本,示例:2.7.1。2是大版本,功能有大变动。7是小功能升级。1是修复小bug发布的版本
③maven项目中的package.cmd文件:
call mvn -Dmaven.test.skip=true clean package
pause
-Dmaven.test.skip=true 跳过单元测试文件