maven 打包源代码 jar 与 jar-no-fork

Posted OkidoGreen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maven 打包源代码 jar 与 jar-no-fork相关的知识,希望对你有一定的参考价值。

官方解释:

Goals Overview

The Source Plugin has five goals:

  • source:aggregate aggregrates sources for all modules in an aggregator project.
  • source:jar is used to bundle the main sources of the project into a jar archive.
  • source:test-jar on the other hand, is used to bundle the test sources of the project into a jar archive.
  • source:jar-no-fork is similar to jar but does not fork the build lifecycle.
  • source:test-jar-no-fork is similar to test-jar but does not fork the build lifecycle.


前言

maven"内置插件"中没有打包源代码的插件,所以,需要开发者配置插件。apache提供了maven-source-plugin插件用于打包源代码。


maven-source-plugin

The Source Plugin has five goals:

  • source:aggregate aggregrates sources for all modules in an aggregator project.
  • source:jar is used to bundle the main sources of the project into a jar archive.
  • source:test-jar on the other hand, is used to bundle the test sources of the project into a jar archive.
  • source:jar-no-fork is similar to jar but does not fork the build lifecycle.
  • source:test-jar-no-fork is similar to test-jar but does not fork the build lifecycle
配置 在《maven实战》一书中,配置使用的是jar-no-fork
<plugins>
			<plugin>
				<artifactId>maven-source-plugin</artifactId>
				<version>2.1.1</version>
				<!-- 配置插件参数 -->
				<executions>
					<execution>
						<id>attach-sources</id>
						<phase>verify</phase>
						<goals>
							<goal>jar-no-fork</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>


jar-no-fork与jar的区别
jar,在执行goal之前,执行generate-sources阶段,也就是说,如果,jar绑定的目标在generate-sources之后(比如verify)的话,generate-sources会执行两遍。
  • The goal is thread-safe and supports parallel builds.
  • Binds by default to the lifecycle phasepackage
  • Invokes the execution of the lifecycle phase generate-sources prior to executing itself.
jar-no-fork,没有其余动作,在绑定的phase执行。原文是,
  • The goal is thread-safe and supports parallel builds.

为什么会有jar-no-fork? 临时,我也没找到它存在的理由。
参考 maven-source-plugin doc
difference between maven-source-plugin-jar-and-jar-no-fork-goal

以上是关于maven 打包源代码 jar 与 jar-no-fork的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot – 将项目代码与依赖jar包分开打包教程

maven-jar-plugin 可以把依赖的jar包一起打包吗

maven工程编译并生成可执行JAR包命令

springcloud maven打包部署

maven常用的lifecycle,clean/install/deploy,maven打包jar包,maven打包强制拉取最新依赖

Maven 生成打包可执行jar包