①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:workspaceAlleclipseWorkspaceactiviti-demo argetactiviti-demo-0.0.1-SNAPSHOT.jar to G:.m2 epositorycomexampleactiviti-demo .0.1-SNAPSHOTactiviti-demo-0.0.1-SNAPSHOT.jar [INFO] Installing C:workspaceAlleclipseWorkspaceactiviti-demopom.xml to G:.m2 epositorycomexampleactiviti-demo .0.1-SNAPSHOTactiviti-demo-0.0.1-SNAPSHOT.pom [INFO] Installing C:workspaceAlleclipseWorkspaceactiviti-demo argetactiviti-demo-0.0.1-SNAPSHOT-jar-with-dependencies.jar to G:.m2 epositorycomexampleactiviti-demo .0.1-SNAPSHOTactiviti-demo-0.0.1-SNAPSHOT-jar-with-dependencies.jar
放到本地仓库的:
项目打包放到私服,不仅仅是把打成的jar包copy过去,而是上图中生成的文件都需要放。
要么配置好,deploy命令直接放到私服上。要么在本地install,把生成的整个包都传到私服上。
如果放到私服的包只有jar,那么使用私服的时候就会报错。因为需要根据pom文件去查找下载引用的jar, 如果没有pom,jar中引用的包不会下载,项目就会报错。
比如:spring-boot-starter-thymeleaf这个jar中引用了thymeleaf:
1 <dependency> 2 <groupId>org.thymeleaf</groupId> 3 <artifactId>thymeleaf</artifactId> 4 <version>${thymeleaf.version}</version> 5 </dependency>
但是私服上spring-boot-starter-thymeleaf这个包只有jar,没有pom文件。所以,项目在download时,就只下载spring-boot-starter-thymeleaf,不会下载thymeleaf。导致项目报错。
打开本地仓库spring-boot-starter-thymeleaf所在位置:
这个pom文件的内容是私服自动生成的,不含depencies的:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <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" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 4 <modelVersion>4.0.0</modelVersion> 5 <groupId>org.springframework.boot</groupId> 6 <artifactId>spring-boot-starter-thymeleaf</artifactId> 7 <version>1.5.9.RELEASE</version> 8 <description>POM was created by Sonatype Nexus</description> 9 </project>
无法根据这个pom去下载依赖的jar
②发布版本,示例:2.7.1。2是大版本,功能有大变动。7是小功能升级。1是修复小bug发布的版本
③maven项目中的package.cmd文件:
1 call mvn -Dmaven.test.skip=true clean package 2 pause
-Dmaven.test.skip=true 跳过单元测试文件