maven-jar-plugin maven打包插件笔记

2024-06-20 20:04

本文主要是介绍maven-jar-plugin maven打包插件笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

      • 配置示例
    • 其他
      • 官网文档
      • 问题
      • maven打包插件是如何和打包动作关联在一起的?
      • 配置文件中 goal是必须的吗?

maven自定义插件内容很多,也不易理解,这里把maven打包插件单拿出来,作为入口试着理解下。

配置示例

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>3.2.2</version><configuration><!--要使用的打包配置.--><archive><!-- 创建的归档文件是否包含以下pom.xml 和pom.properties Maven 文件,默认是true --><addMavenDescriptor>true</addMavenDescriptor><!-- 生成MANIFEST.MF的设置 --><manifest><!-- 为依赖包添加路径, 这些路径会写在MANIFEST文件的Class-Path下 --><addClasspath>true</addClasspath><!-- 这个jar所依赖的jar包添加classPath的时候的前缀,如果这个jar本身和依赖包在同一级目录,则不需要添加 --><classpathPrefix>lib/</classpathPrefix><!-- jar启动入口类 --><mainClass>com.example.demo.DemoApplication</mainClass></manifest><manifestEntries><!-- 在Class-Path下添加配置文件的路径 --><!--<Class-Path>../config/</Class-Path>--></manifestEntries></archive><!-- jar包的位置,其中${project.build.directory}默认为 target/ --><outputDirectory>${project.build.directory}</outputDirectory><!--过滤掉不希望包含在jar中的文件--><excludes><exclude>${project.basedir}/xml/*</exclude></excludes><!--要包含的文件列表--><includes><!-- 打jar包时,打包class文件和config目录下面的 properties文件 --><!-- 有时候可能需要一些其他文件,这边可以配置,包括剔除的文件等等 --><include>**/*.class</include><include>**/*.properties</include></includes></configuration>
</plugin>

如上标签就是打包插件自定义的。其他的如等都是maven基础标签。

所有标签中的内容,都是用@Parameter注入的,如果必填,加上 required = true。

@Parameter(defaultValue = "${project.build.outputDirectory}", required = true)private File classesDirectory;

其他

官网文档

apache打包插件官网地址:
https://maven.apache.org/plugins/maven-jar-plugin/jar-mojo.html

github地址:
https://github.com/apache/maven-jar-plugin.git

问题

maven打包插件是如何和打包动作关联在一起的?

创建类的时候就定义了。 defaultPhase = LifecyclePhase.PACKAGE 这一行就是。

@Mojo(name = "jar",defaultPhase = LifecyclePhase.PACKAGE,requiresProject = true,threadSafe = true,requiresDependencyResolution = ResolutionScope.RUNTIME)
public class JarMojo extends AbstractJarMojo {}

配置文件中 goal是必须的吗?

想要解答这个问题,先要知道控制执行有几种方式。

两种:
1、 @Mojo注解中defaultPhase设置默认phase(阶段)。
2、配置文件中指定。
如:

<plugin><groupId>com.example</groupId><artifactId>my-plugin</artifactId><version>1.0.0</version><executions><!-- 在compile阶段执行插件的goal-1目标 --><execution><id>execution-1</id><phase>compile</phase><goals><goal>goal-1</goal></goals></execution><!-- 在install阶段执行插件的goal-2和goal-3目标 --><execution><id>execution-2</id><phase>install</phase><goals><goal>goal-2</goal><goal>goal-3</goal></goals></execution></executions>
</plugin>

这样也实现了goal和phase的绑定。

那么另外一个问题也迎刃而解,maven自定义插件可以有多个goal(mojo)吗?
当然可以,参考maven-install-plugin,有两个mojo:install和install-file。

这篇关于maven-jar-plugin maven打包插件笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1079120

相关文章

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

《解决Maven项目idea找不到本地仓库jar包问题以及使用mvninstall:install-file》:本文主要介绍解决Maven项目idea找不到本地仓库jar包问题以及使用mvnin... 目录Maven项目idea找不到本地仓库jar包以及使用mvn install:install-file基

Maven如何手动安装依赖到本地仓库

《Maven如何手动安装依赖到本地仓库》:本文主要介绍Maven如何手动安装依赖到本地仓库问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、下载依赖二、安装 JAR 文件到本地仓库三、验证安装四、在项目中使用该依赖1、注意事项2、额外提示总结一、下载依赖登

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

将Java程序打包成EXE文件的实现方式

《将Java程序打包成EXE文件的实现方式》:本文主要介绍将Java程序打包成EXE文件的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录如何将Java程序编程打包成EXE文件1.准备Java程序2.生成JAR包3.选择并安装打包工具4.配置Launch4

PyInstaller打包selenium-wire过程中常见问题和解决指南

《PyInstaller打包selenium-wire过程中常见问题和解决指南》常用的打包工具PyInstaller能将Python项目打包成单个可执行文件,但也会因为兼容性问题和路径管理而出现各种运... 目录前言1. 背景2. 可能遇到的问题概述3. PyInstaller 打包步骤及参数配置4. 依赖

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

idea maven编译报错Java heap space的解决方法

《ideamaven编译报错Javaheapspace的解决方法》这篇文章主要为大家详细介绍了ideamaven编译报错Javaheapspace的相关解决方法,文中的示例代码讲解详细,感兴趣的... 目录1.增加 Maven 编译的堆内存2. 增加 IntelliJ IDEA 的堆内存3. 优化 Mave

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加