打包 mvn clean install -Dmaven.test.skip=true 进入到项目与src的同级目录
-Dmaven.test.skip=true 跳过测试目录 否则的 会把测试的类也打进去并且 执行
也可以
<properties>
<java.version>1.8</java.version>
<skipTests>true</skipTests>
</properties>
就不用写上面那句了
package 打包 但是并不会上传到本地仓库 install 会 deploy 不仅上传到本地 而且上传到私服
pom文件打包的是否 项目名称记得
<build>
<finalName>${project.name}</finalName>
<plugins>
添加这个 否则他会带版本号
idea创建项目的时候
spring-boot-maven-plugin 这个是可以默认把所有依赖的包打进去 否则只会是一个很小的项目
虽然maven会自动编译但是他默认编译的jdk版本低 所以我们需要指定
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
而这个插件
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>utf-8</encoding>
<useDefaultDelimiters>true</useDefaultDelimiters>
</configuration>
</plugin>
是为了在spring 配置文件 ${id} 如果不加上面这个 占位符得用@{id} so
另外idea pom文件 上传到私服需要
<distributionManagement>
<repository>
<id>nexus-releases</id>
<name>nexus-releases</name>
<distributionManagement>
<url>http://172.20.5.1:8081/repository/hndt-maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>nexus-snapshots</name>
<url>http://172.20.5.1:8081/repository/hndt-maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
并且还得再maven配置文件加上<server></server>用户名密码
这个里面两个id和那settinbg.xml需要一一对应 是s包传到对应的库里 release传到对应的库里
另外s包的更新策略是daliy是每天更新一次 我们若想直接更新私服的包 可以把本地的删除也可以
miror会覆盖profile配置
当然也可以针对某个项目配个这
Spring Boot Maven plugin的最主要goal就是repackage,其在Maven的package生命周期阶段,能够将mvn package生成的软件包,再次打包为可执行的软件包,并将mvn package生成的软件包重命名为*.original。
基于上述配置,对一个生成Jar软件包的项目执行如下命令 还有非常重要的额作用 找到执行的主类 mainClass否则会报错 找不到main class
mvn package spring-boot:repackage
<version>0.0.1-SNAPSHOT</version> 这个0.0.1 是 redeploy 打包上传到私服的时候 他会生成版本号 例如20200211xxxxx 上传一次一个版本号 所以我们download私服的时候就不需要维护jar包 但是在我们正在用jar到服务器上的时候 而不是引用的时候只要加上
<build>
<finalName>${project.name}</finalName> 那么那就是不到版本号的名字
这个provide 就是说 谁应用 当前这个工程 那么 会在运行阶段舍弃 这个包 编辑测试可以用 相当于抛弃
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>2.2.1.RELEASE</version>
<scope>provided</scope>
</dependency>
这个和上个差不多 都是排除依赖 在引用这个时候 如果 不显示 加上下面这段代码(可以少加个版本号)是不会引用到的
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
<version>1.18.10</version>
</dependency>
父pom只要加入了 <dependencyManagement>那就证明他只能管个版本号 如果想公用jar包 那得把他去掉
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencyManagement>
想要把那个本地jar打包到私服上
pom.xml
<distributionManagement>
<repository>
<id>maven-releases</id>
<name>nhr</name>
<url>http://172.16.21.83:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>maven-snapshots</id>
<name>nhs</name>
<url>http://172.16.21.83:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
<server>
<id>maven-releases</id>
<username>admin</username>
<password>gaimima</password>
</server>
<server>
<id>maven-snapshots</id>
<username>admin</username>
<password>gaimima</password>
</server>
</servers>
他会根据你的s还是relase(真正要上线了)传到私服上
mvn deploy:deploy-file -DgroupId=com.xuxueli -DartifactId=xxl-job-core -Dversion=2.3.0-SNAPSHOT -Dpackaging=j
ar -Dfile=D:\maven-repository\com\xuxueli\xxl-job-core\2.3.0-SNAPSHOT\xxl-job-core-2.3.0-SNAPSHOT.jar -Durl=http://172.16.21.83:8081/repository/maven-snapshots/ --setti
ngs D:\devSoft\apache-maven-3.6.1-bin\apache-maven-3.6.1\conf\settings.xml -DrepositoryId=maven-snapshots