大部分情况下我们使用 java -jar 命令运行内嵌了tomcat的jar包,使用 java -jar xx.jar 时会运行一个程序。那么当我们使用 java -jar命令运行一个非tomcat的jar时又该如何使用呢?
现在有个需求,当我们使用 java -jar命令启动jar包时可以调用到内部的某个方法,那我们应该怎么做呢?
在pom文件中指定打包方式
我们在这用的是jdk17的版本,为防止冲突,需要在pom文件中添加一些代码
代码如下
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.example.demo.JavaFXBootstrap</mainClass>
</transformer>
</transformers>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>module-info.class</exclude>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
注意此处 transformer制定的是程序执行启动时需要执行的方法
我们这边制定的maven插件也是17版本
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
<configuration>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
使用 mvn clean package 将生成的jar包 启动即可
或者使用下面命令,指定执行时需要执行的方法
java -cp demo-1.0-SNAPSHOT.jar com.example.demo.JavaFXBootstrap main