Maven打包
Maven打jar包
实际开发的项目一般都要打成jar包或者war包。
如果是独立的java程序,打成jar包后,在安装了java运行时的环境中,命令行即可直接运行:
java -jar xxx.jar
如果是传统的java web项目,打成war包后,放入tomcat或其他java web容器中,即可直接运行。
如果使用springboot开发java web项目,由于springboot默认集成javaweb容器,也可以打成jar包,在命令行直接运行。
独立java程序打jar包
首先,项目的pom文件要添加一行,设置打包格式为jar格式:
<packaging>jar</packaging>
然后要在项目的pom.xml文件中添加maven-resources-plugin
,用于将项目的配置文件复制到将要生成的jar包外,方便修改配置。(这里将项目的配置文件复制到了输出文件夹的/resources目录下)。
<!-- Maven插件的汇总介绍: https://maven.apache.org/plugins/index.html -->
<!-- 资源/配置文件的复制插件 -->
<!-- https://maven.apache.org/plugins/maven-resources-plugin/ -->
<!-- 默认:src/main/resources下的资源和pom.xml下project.build.resources标签下的资源都会被自动复制到源码编译后的输出目录-->
<!-- 默认:测试源码目录的资源会被自动输出到测试输出目录-->
<!-- 如果想要把配置/资源输出到指定目录,需要作自定义配置-->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.2.0</version>
<!-- 自定义配置:该过程的作用是用于复制指定的资源文件到指定位置-->
<!--可用于将配置文件放到jar包外面,方便修改 -->
<executions>
<execution>
<id>copy-resources</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>*.properties</include>
<include>log4j2.xml</include>
</includes>
</resource>
</resources>
<outputDirectory>${project.build.directory}/resources/</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
然后要在项目的pom.xml文件中添加maven-dependency-plugin
,用于将项目的依赖复制到将要生成的jar包外。(这里将项目的依赖复制到了输出文件夹的/lib目录下)。
<!--依赖复制与分析插件-->
<!--https://maven.apache.org/plugins/maven-dependency-plugin/-->
<!-- 这里该插件的作用是用于复制依赖的jar包到指定的文件夹里 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.1.2</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib/</outputDirectory>
<excludeTransitive>false</excludeTransitive>
<!--<stripVersion>true</stripVersion>-->
<stripVersion>false</stripVersion>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
再者就是在项目的pom.xml文件中添加maven-jar-plugin
,用于将项目打包成jar文件,这里排除了项目的配置文件,并修改生成jar的META-INF/MANEFEST.MF描述文件。(指引jar使用项目外的lib/目录下的依赖和项目外resources/目录下的配置文件)。
<!-- 打jar包插件 -->
<!--https://maven.apache.org/plugins/maven-jar-plugin/-->
<!-- 打jar包,以下的配置是忽略properties文件,并在MANIFEST文件中指明依赖包所在路径和配置文件所在路径 -->
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<excludes>
<exclude>*.properties</exclude>
<exclude>log4j2.xml</exclude>
</excludes>
<archive>
<manifest>
<mainClass>com.jingmin.Main</mainClass>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
<manifestEntries>
<!--MANIFEST.MF 中 Class-Path 加入资源文件目录 -->
<Class-Path>./resources/</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
在项目文件夹下或IDE中执行maven命令:
mvn package
就会在项目的输出目录下多生成2个目录和1个jar包:
lib/ #项目所有的依赖都自动复制到了这个目录下
resources/ #项目配置文件自动复制到了这个目录下
xxxx.jar #生成的可执行jar包
然后只需要将这2个目录和1个jar包,复制到需要部署的环境中,命令行执行jar命令即可:
java -jar xxxx.jar
java web项目打包成war
项目的pom文件添加一行,设置打包格式为war格式即可:
<packaging>war</packaging>
在项目文件夹下或IDE中执行maven命令:
mvn package
就会在项目的输出目录下1个war包,复制到需要部署的web容器中(比如tomcat中),项目就会自动解也运行。
java web项目打包成jar
实际上,这是借助springboot完成的。springboot项目的pom中,自动添加了web容器的依赖,打包成的jar中自动附带了web容器,所以不需要放到web容器中运行。
通过Spring Initializr生成的Springboot项目,pom.xml文件中自带了springboot插件。如果是web项目,打包时,自动附带了web容器,生成了可在命令行直接运行的jar格式的web项目。
将jar包复制到需要部署的环境中,命令行执行jar命令,web项目就运行起来了。
java -jar xxxx.jar