Java启动命令与Maven打包设置
一、Java启动命令
java程序的启动方式有三种:
1、java -jar
生成的jar包中,manifest文件定义了Main Class,可使用该命令
java -jar test.jar
2、java -cp
生成的jar包中,无Main Class配置,可使用该命令
java -cp test.jar cn.matt.Test
该命令也可从class文件中启动java程序,对于依赖的jar包,须明确列出,并用分号(windows)或冒号(Linux)分隔
java -cp ./target/classes;test2.jar cn.matt.Test
3、java -Djava.ext.dirs
当jar中包含依赖包时,使用java -cp并不方便,此时可使用该命令,只需指定依赖包目录
java -Djava.ext.dirs=. cn.matt.maven_test.App
二、Java打包设置
使用Maven打包,默认情况下,生成的jar包不能直接运行(无Main Class),并且不包含依赖jar包
指定Main Class,并包含依赖的jar包配置:
<build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <appendAssemblyId>false</appendAssemblyId> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass>cn.matt.maven_test3.App</mainClass> </manifest> </archive> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>assembly</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
三、springboot 打包设置
1、默认将依赖打到一个Jar:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.1.9.RELEASE</version> <configuration> <mainClass>com.notes.JavaNotesApplication</mainClass> <layout>JAR</layout> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> <configuration> <attach>false</attach> </configuration> </execution> </executions> </plugin>
2、springboot支持瘦身包,通过 -Dloader.path 指定依赖包或配置文件路径
配置方式参见:springboot 打包插件去除jar包瘦身
四、maven仓库
maven本地仓库从远处同步后会在_remote.repositories文件中记录同步仓库名。_remote.repositories设计目的为:规避不同仓库存在同名非同一组件加载错误的问题。编译项目时,maven从优先从本地仓库拉取,拉取前会判断_remote.repositories存在&&当前仓库id或镜像id在_remote.repositories中无记录,false则忽略本地文件并从远程仓库重新拉取。
强制使用本地文件的方法有三种:
1、忽略_remote.repositories (推荐)
mvn clean install -llr 或 mvn clean install -Dmaven.legacyLocalRepo=true
2、删除_remote.repositories
3、修改settings.xml -> mirrorId 为_remote.repositories中已记录的名称
参考: