扣扣技术分享交流群:1125844267
其实,制作一个可执行的jar包主要就是pom的一些配置,之后打包执行都跟springboot类似
我们首先创建一个普通的maven项目,接下来看一下pom的配置
<build>
<!-- 最终达成jar包的名字,最好还是配置一下,简单明了,否则默认的有点儿长 -->
<finalName>copy-product</finalName>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<appendAssemblyId>false</appendAssemblyId> <!-- 设置为false后打包不带后缀(jar-with-dependencies)-->
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<!-- 此处指定main方法入口的class,这个很重要,jar包启动之后就会执行这个main方法,从而实现我们的需 求 -->
<mainClass>cn.guide.xd.ProductMain</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
至于其它依赖jar包,根据自己需求自行引入即可,然后用maven达成jar包,执行命令java -jar jar包名称 参数1 参数2 参数3。。。参数要具体看main方法中的需要。
我们都知道main方法的参数是数组,public static void main(String[] args) ,我们可以根据jar包启动时的传参来依次取数组args中的参数使用
追加:
之前是没有集成spring,没有配置数据源。后来根据业务需求,集成spring后,idea启动操作都没有问题,但是在打成jar包后启动报错,纠结很长时间,最后查到是因为maven-assembly-plugin这个插件有bug,对于jar包中的冲突文件会覆盖,而不是追加。我们需要替换成另外一种maven插件。
<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.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.schemas</resource>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>cn.guide.xd.ProductMain</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
对于每个<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.schemas</resource> </transformer>中的<resource>内容是可以根据自己的报错情况自行修改的
个人建的交流群1125844267,欢迎大家加入!
如果内容对大家有所帮助,感谢鼓励!实现我小时候一人给我一块钱的美梦,哈哈!