需求

一个maven项目中有多个类有main方法,一次打出多个jar包使这些jar包有不同的主函数

解决

方式一:通过多个pom文件打包

比如再写一个pom2.xml,使用命令 mvn install -f pom2.xml 指定pom文件进行打包

方式二:通过maven-assembly-plugin

案例:

<plugin>
	<artifactId>maven-assembly-plugin</artifactId>
	<executions>
		<execution>
			<id>jar1</id>
			<configuration>
				<finalName>jar1</finalName>
				<archive>
					<manifest>
						<mainClass>com.test.Test</mainClass>
					</manifest>
				</archive>
				<descriptorRefs>
					<descriptorRef>jar-with-dependencies</descriptorRef>
				</descriptorRefs>
			</configuration>
			<phase>install</phase>
			<goals>
				<goal>assembly</goal>
			</goals>
		</execution>
		<execution>
			<id>jar2</id>
			<configuration>
				<finalName>jar2</finalName>
				<archive>
					<manifest>
						<mainClass>com.test.Test2</mainClass>
					</manifest>
				</archive>
				<descriptorRefs>
					<descriptorRef>jar-with-dependencies</descriptorRef>
				</descriptorRefs>
			</configuration>
			<phase>install</phase>
			<goals>
				<goal>assembly</goal>
			</goals>
		</execution>
	</executions>
</plugin>
扩展

方式二中可以打出两个jar包,名称为 jar1-jar-with-dependencies.jar 和 jar2-jar-with-dependencies.jar,这里后缀是自动加上的,怎么才能修改jar包的名称呢?

使用maven-antrun-plugin这个插件,通过move命令修改名称

详见 maven打完jar包之后将jar包放到指定位置总结 中的方式三