maven打可执行jar包

方法-:POM.XML文件中添加
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<version>2.4</version>
				<configuration>
					<archive>
						<manifest>
							<addClasspath>true</addClasspath>
							<classpathPrefix>lib/</classpathPrefix>
							<mainClass>com.unj.dubbotest.provider.Bootstrap</mainClass>
						</manifest>
					</archive>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-dependency-plugin</artifactId>
				<version>2.1</version>
				<executions>
					<execution>
						<id>copy</id>
						<phase>package</phase>
						<goals>
							<goal>copy-dependencies</goal>
						</goals>
						<configuration>
							<outputDirectory>${project.build.directory}/lib</outputDirectory>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>

执行mvn clean package,生成jar文件,MANIFEST.MF文件中会有依赖的jar信息以及main函数信息,执行命令:java -jar ***.jar即可运行。

方法二:
POM文件中添加
			<plugin>
				<artifactId>maven-assembly-plugin</artifactId>
				<version>2.3</version>
				<configuration>
					<descriptors> <!--描述文件路径 -->
						<descriptor>src/main/assemble/package.xml</descriptor>
					</descriptors>
				</configuration>
				<executions>  <!--执行器 mvn assembly:assembly -->
					<execution>
						<id>make-zip</id><!--名字任意 -->
						<phase>package</phase><!-- 绑定到package生命周期阶段上 -->
						<goals>
							<goal>single</goal><!-- 只运行一次 -->
						</goals>
					</execution>
				</executions>
			</plugin> 

src/main/assemble/目录下添加package.xml文件
<assembly
	xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
	<id>bin</id>
	<!-- 最终打包成一个用于发布的zip文件 -->
	<formats>
		<format>zip</format>
	</formats>

	<!-- Adds dependencies to zip package under lib directory -->
	<dependencySets>
		<dependencySet>
			<!-- 不使用项目的artifact,第三方jar不要解压,打包进zip文件的lib目录 <useProjectArtifact>false</useProjectArtifact> -->
			<outputDirectory>lib</outputDirectory>
			<unpack>false</unpack>
		</dependencySet>
	</dependencySets>

	<fileSets>
		<!-- 把项目相关的说明文件,打包进zip文件的根目录 -->
		<fileSet>
			<directory>${project.basedir}</directory>
			<outputDirectory>/</outputDirectory>
			<includes>
				<include>README*</include>
				<include>LICENSE*</include>
				<include>NOTICE*</include>
			</includes>
		</fileSet>

		<!-- 把项目的配置文件,打包进zip文件的config目录 -->
		<fileSet>
			<directory>${project.basedir}\src\main\config</directory>
			<outputDirectory>config</outputDirectory>
			<includes>
				<include>*.xml</include>
				<include>*.properties</include>
			</includes>
		</fileSet>

		<!-- 把项目的脚本文件目录( src/main/scripts )中的启动脚本文件,打包进zip文件的跟目录 -->
		<fileSet>
			<directory>${project.build.scriptSourceDirectory}</directory>
			<outputDirectory></outputDirectory>
			<includes>
				<include>startup.*</include>
			</includes>
		</fileSet>

		<!-- 把项目自己编译出来的jar文件,打包进zip文件的根目录 -->
		<fileSet>
			<directory>${project.build.directory}</directory>
			<outputDirectory></outputDirectory>
			<includes>
				<include>*.jar</include>
			</includes>
		</fileSet>
	</fileSets>
</assembly> 

执行mvn assembly:assembly,会生成一个zip包,里面包含生成的jar包以及依赖的jar包和脚本文件、配置文件等。

猜你喜欢

转载自cping.iteye.com/blog/2262571