Maven编译打包成可运行的Jar包

    刚接触Maven项目,以前都是普通的Java Project,少了啥就往lib文件夹下面加依赖的Jar包。工作中使用到Maven构建项目,开始慢慢熟悉使用,收到的第一项任务就是,把项目打包成一个独立可运行的Jar包。

    一开始,还是按照以前的老办法:右键->Export->Runnable JAR file,居然也能运行。但是发现一个问题,这样把pom文件中依赖的所有lib都放入了运行的Jar包中,导致Jar包显得十分臃肿。于是便有了第二种方法,使用Maven的plugin来打包。

    先贴出pom中配置,后面再介绍如何使用:

<plugins>
	<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>
	<plugin>
		<groupId>org.apache.maven.plugins</groupId>
		<artifactId>maven-jar-plugin</artifactId>
		<configuration>
			<archive>
				<manifest>
					<addClasspath>true</addClasspath>
					<classpathPrefix>lib/</classpathPrefix>
					<mainClass>cn.rumoss.maven.PackageTest</mainClass>
				</manifest>
			</archive>
		</configuration>
	</plugin>
	<plugin>
		<groupId>org.apache.maven.plugins</groupId>
		<artifactId>maven-surefire-plugin</artifactId>
		<configuration>
			<testFailureIgnore>true</testFailureIgnore>
		</configuration>
	</plugin>
</plugins>
</build>

    需要修改的地方有两处:

    (1)outputDirectory:项目依赖的文件输出路径,比如项目中依赖了Spring,如果配置了该路径,则项目中使用到的Spring的Jar包都会被复制到该路径下;

    (2)mainClass:配置Jar运行的入口类的全限定名(包名+类名);

    (3)第三个plugin:maven-surefire-plugin中testFailureIgnore的作用是,当test文件夹下编译运行不通过时,不会影响到Jar包的生成;

    (4)使用方法:配置好后,【右键】->【Run As...】->【Maven install】,Console里面提示Build成功后,即可到target目录下找到生成的Jar包和依赖的lib文件夹。

转载于:https://my.oschina.net/javamaster/blog/1584776

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值