idea项目打包--jar包

1,911 阅读2分钟

最近在弄一个项目,里面涉及到的jar比较多,还涉及到一些画图插件,以及一些静态资源。
因为涉及的东西多,导致打包后的Jar包比较大,每次的jar包传输都非常消耗时间。
决定整理一次项目打包。
如果项目比较小使用idea内置Artifacts打包也是一个不错的选择。
可能我头一次接触artifacts,对他的操作也不是很熟悉。在网上找了一些操作方法发现都大同小异。
虽然说他打包能把依赖和业务代码分开,但是他给业务代码打包是把整个src下的所有文件一起打包,得不到我想要的结果.
于是放弃了该打包方式,还是回归到maven打包。
总的来说,对我来说我只需要完成两个部分操作就能满足我的需求:


第一部分:提取依赖

相对来说这一步比较简单,使用maven-dependency-plugin插件,提取依赖到lib包下,具体代码如下:

		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-dependency-plugin</artifactId>
			<executions>
				<execution>
					<id>copy-dependencies</id>
					<phase>prepare-package</phase>
					<goals>
						<goal>copy-dependencies</goal>
					</goals>
					<configuration>
						<outputDirectory>${project.build.directory}/lib</outputDirectory>
						<overWriteReleases>false</overWriteReleases>
						<overWriteSnapshots>false</overWriteSnapshots>
						<overWriteIfNewer>true</overWriteIfNewer>
					</configuration>
				</execution>
			</executions>
		</plugin>

这里唯一需要注意的是${project.build.directory}/lib,他指定了copy依赖的路径。

第二部分:业务打包

打包的重点就在这个地方。
按照需求,需要指定文件/文件夹不参数打包。废话少说,先上代码:

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-jar-plugin</artifactId>
		<configuration>
			<!-- 生成的jar包存放位置 -->
			<outputDirectory>${project.build.directory}</outputDirectory>
			<archive>
				<!--配置文件加载位置-->
				<manifestEntries>
					<Class-Path>config/</Class-Path>
				</manifestEntries>
				<manifest>
					<addClasspath>true</addClasspath>
					<classpathPrefix>lib/</classpathPrefix>
					<mainClass>com.findata.platform.PlatformApplication</mainClass>
				</manifest>
			</archive>
			<excludes>
				<exclude>**/*.properties</exclude>
				<exclude>static/**</exclude>
				<exclude>template/**</exclude>
				<exclude>document/**</exclude>
				<exclude>font/**</exclude>
				<exclude>echarts-covert/**</exclude>
				<exclude>phantomjs-2.1.1-linux-x86_64/**</exclude>
				<exclude>phantomjs-2.1.1-windows/**</exclude>
			</excludes>
	</configuration>
</plugin>
这里需要注意的就会多一些,
一是jar包存放的位置,可以按照自己需求调整
二是manifestEntries,设置配置文件的位置,这个地方需要注意下
   他不会主动的给你copy配置文件,可以手动在业务jar包同级创建config目录,并把配置文件放入目录下
三是addClasspath,把jar包路径添加到manifest中,并指定入口
四是excludes这块,这块就是把不需要打包的路径/文件排除掉。

基本上就这四部,是不是很简单。如果想要控制打的jar的名字
只需要添加finalName标签就可以改名。
至此,我的要求就全部已经可以实现。