首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从自定义mojo访问maven插件的运行时配置的最佳方法?

从自定义mojo访问maven插件的运行时配置的最佳方法是通过使用Maven的Expression Evaluator。这是一个强大的工具,允许您在运行时访问Maven项目的配置信息。以下是如何使用Expression Evaluator的一些步骤:

  1. 首先,在您的Maven插件中,您需要注入Expression Evaluator。您可以通过在您的Mojo类中添加以下代码来实现这一点:
代码语言:java
复制
@Component
private MavenProject project;

@Parameter(defaultValue = "${session}")
private MavenSession session;

@Parameter(defaultValue = "${mojoExecution}")
private MojoExecution execution;

private ExpressionEvaluator expressionEvaluator;
  1. 接下来,在您的Mojo类的execute()方法中,您需要初始化Expression Evaluator:
代码语言:java
复制
expressionEvaluator = new PluginParameterExpressionEvaluator(session, execution);
  1. 现在,您可以使用Expression Evaluator来访问Maven项目的配置信息。例如,如果您想要访问<build<plugins<plugin<configuration><myProperty>元素的值,您可以使用以下代码:
代码语言:java
复制
String myPropertyValue = (String) expressionEvaluator.evaluate("${myProperty}");

这将返回<myProperty>元素的值,您可以在您的插件中使用它。

  1. 最后,您可以将这些值传递给您的插件的其他方法,以便在运行时使用它们。

通过使用Expression Evaluator,您可以轻松地访问Maven项目的运行时配置,并在您的插件中使用这些值。这是从自定义mojo访问maven插件的运行时配置的最佳方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

聊聊如何自定义实现maven插件

false @aggregator:当mojo在多模块项目上运行时,该标注表示目标只会在顶层模块运行。...到phase执行完,才执行插件目标 @execute lifecycle="" phase = "":在运行该目标前,让maven先运行一个自定义生命周期,到指定阶段为止。...name,type,required,editable(是否允许在pom.xml中设置),description,如可使用@parameter将mojo某个字段标注为可配置参数,即mojo参数。...这段话来自官网,他功能主要是它提供了钩子,允许用户调整插件操作以满足他们需要以及可以pom文件中提取参数。...这个参数正常可以插件configration标签中进行提取 3、将写好插件安装到本地仓库 执行命令 mvn clean install 在执行过程中,可能会报如下异常 org.apache.maven.plugins

99130

【Android Gradle 插件】将自定义 Gradle 插件上传到自建 Maven 仓库 ⑥ ( 配置 Sonatype Nexus 搭建 Maven 私服 | 配置端口号 | 配置JVM )

文章目录 一、配置 Maven 私服端口号 二、配置 Maven 私服 JVM 环境 Android Plugin DSL Reference 参考文档 : Android Studio 构建配置官方文档...Gradle 配置关联 : 【Android Gradle 插件】Gradle 依赖管理 ① ( org.gradle.api.Project 配置 | Android Gradle 插件配置与 Gradle...Gradle 插件 - GitHub 地址 : https://github.com/han1202012/Android_UI 一、配置 Maven 私服端口号 ---- Sonatype Nexus...\nexus3\etc\nexus.properties " 配置文件中 application-port 配置 , 修改访问端口号 ; 配置文件内容如下 : # Jetty section # application-port...\nexus.vmoptions " 文件中 , 配置 Maven 私服 JVM 环境 ;

78720
  • 聊聊如何自定义实现maven插件

    false @aggregator:当mojo在多模块项目上运行时,该标注表示目标只会在顶层模块运行。...到phase执行完,才执行插件目标 @execute lifecycle="" phase = "":在运行该目标前,让maven先运行一个自定义生命周期,到指定阶段为止...name,type,required,editable(是否允许在pom.xml中设置),description,如可使用@parameter将mojo某个字段标注为可配置参数,即mojo参数。...这段话来自官网,他功能主要是它提供了钩子,允许用户调整插件操作以满足他们需要以及可以pom文件中提取参数。...这个参数正常可以插件configration标签中进行提取 3、将写好插件安装到本地仓库 执行命令 mvn clean install 在执行过程中,可能会报如下异常 org.apache.maven.plugins

    1.3K30

    Maven系列第10篇:设计你自己maven插件【高手必备】

    本篇环境 jdk1.8 maven3.6.2 idea 本章内容 自定义插件详细步骤 自定义插件参数使用 自定义插件前缀使用 手动实现打包之后自动运行插件 自定义插件详细步骤 maven插件是有很多目标...每个目标对应一个java类,这个类在maven中叫做MOJOmaven提供了一个Mojo接口,我们开发插件也就是去实现这个接口方法,这个接口是: org.apache.maven.plugin.Mojo...自定义插件前缀使用 设置自定义插件artifactId 自定义插件artifactId满足下面的格式: xxx-maven-plugin 如果采用这种格式maven会自动将xxx指定为插件前缀...在`~/.m2/settings.xml`中配置自定义插件组 在pluginGroups中加入自定义插件组groupId,如: com.javacode2018 这样当我们通过前缀调用插件时候,maven除了会在2个默认组中查找,还会在这些自定义插件组中找,一般情况下我们自定义插件通常使用同样groupId。

    3.9K30

    Annotation 使用案例

    Maven 插件 如何写一个插件,搜索一下都有,不再赘述,按照流程做个 1、插件POM 按照普通 maven 项目骨架构建一个 maven 项目,项目的名称位doc-maven-plugin,按照 XXX-maven-plugin...核心解析方法 execute是整个 Mojo 核心方法,我们是业务实现也在这里,这里把伪代码写出 //根据配置参数,构造数据库连接Connection c=getConnByConfig(url,driver...,user,pswd)//配置参数中获得项目中 CLASS 路径String targetPath=project.getBuild().getOutputDirectory();//获取路径下所有类文件...//信息进行存储到数据库,根据类名+方法名称作为主键,不存在插入,存在就更新 } } 使用 插件写好了,我们需要在项目中使用,建立一个maven项目,依赖annotation,插件依赖上面的插件...不出意外,你能获得需要东西 ---- 上面是基于 Maven 插件形式,我们需要把 Annotation 存活时间设置为 RunTime,如果设置为 Source 或者 CLASS 又怎样解析?

    1K10

    教小老弟 快速掌握 maven插件

    可以通过一组唯一参数来自定义插件行为,这些参数通过每个插件目标(或Mojo描述公开。...自定义插件 在前面我们提到了一个MojoMojo实际上是一个Maven目标,插件包含任意数量目标(Mojos)。Mojos可以定义为带注释java类或Beanshell脚本。...,该方法就是用来定义这个 Mojo 具体操作内容,我们只需要根据自己需要来编写自己实现即可。...总结 Maven插件Maven核心功能,插件类型有构建类型和报告类型,插件可以有多个目标也就是可以理解为多个功能。自定义插件主要两步:依赖相关jar包和重写Mojo。...自定义插件使用和我们用其他插件使用一样,只要在pom中配置相关配置即可。 只有真正理解了插件实现原理后,才能慢慢去体会猜测我们平时使用那些mvn...命令背后是如何实现

    47720

    【Android Gradle 插件】将自定义 Gradle 插件上传到自建 Maven 仓库 ④ ( 默认生成 pom 文件 | Maven pom 配置 | 自定义 pom 文件节点 )

    文章目录 一、默认生成 pom 文件 二、Maven pom 配置 三、自定义 pom 文件节点 Android Plugin DSL Reference 参考文档 : Android Studio...Gradle 插件 - GitHub 地址 : https://github.com/han1202012/Android_UI 一、默认生成 pom 文件 ---- 在 自定义 Gradle...中 pom 配置 ---- pom 文件中 , 除了默认生成配置外 , 还可以添加自定义 pom 节点属性 ; pom 配置文件也会随着 源码 , jar 包 , 文档 一同上传到 Maven 仓库中...Gradle 插件分组 group 'kim.hsl.plugin' // 指定自定义 Gradle 插件版本号 version '0.1' // 自定义 Gradle 插件名称 , 默认为工程名...publishingPluginPublicationToMavenLocal 任务 , 查看本地 Maven 仓库 , 生成 pom 配置如下 : 自定义 Gradle 插件 - GitHub

    1.5K10

    SpringBoot通过3种方式实现AOP切面

    这一技术不仅拓展了AOP应用场景,还蕴含了巨大性能优化潜力,为开发者提供了更多元化AOP实现方式。 AspectJ-Maven-Plugin编译插件则采取了另辟蹊径方法。...使用Java Agent技术涉及到更复杂配置,包括编写自定义Agent类,主要步骤包括将AspectJ Weaver作为Java Agent运行。下面看看aop.xml和切面类配置。...特点: 性能最佳:编译时增强减少了运行时开销。 深度集成:切面逻辑与业务代码无缝集成。 需要重新编译:每当切面逻辑或业务代码发生变化时,都需要重新编译项目。...而编译插件方式是在编译时增强,性能最佳,深度集成,减少运行时开销。...AspectJ-Maven-Plugin:是一个Maven编译插件,通过编译时修改字节码来集成切面逻辑,性能最佳,但需要重新编译项目。

    19710

    SpringBoot自定义maven-plugin插件整合asm代码插桩

    公司开发框架增加了web系统license授权证书校验模块,实行一台机器一个授权证书,初步方案是增加拦截器针对全局请求进行拦截校验,评估后认为校验方式单一,应该增加重要工具类,业务service实现中每个方法进行校验...,因为涉及代码量较大硬编码工作困难,故选择通过自定义maven插件在编译期间进行动态代码插桩操作 项目配置 新建maven项目设置打包方式 maven-plugin</packaging...exceptioncount++; e.printStackTrace(); } } ASM插桩 新建ClassVisitor重写visitMethod方法来过滤访问需要插桩方法...return new MethodCoverageMethodVisitor(Opcodes.ASM9, methodVisitor); } } 新建MethodVisitor重写visitCode方法针对方法内部字节码进行自定义操作...项目执行mvn install安装到本地仓库 框架项目配置自定义maven插件进行打包,配置执行声明周期为complie(编译),这里goal自定义命令名称需要和mojo注解标注类中指定name名称一致

    34730

    Maven这三个用法你一定要会

    本文中将介绍maven自定义插件(入门实战)自定义archeType模板(实战)按环境打包(实战)三个在私服中常常需用操作。...2、自定义插件 在这里我只是做了简单示例,更复杂功能开发请参考mojoAPI: https://maven.apache.org/developers/mojo-api-specification.html...2.1、插件提供者 插件提供者项目结构: 2.1.1、修改packaging 2.1.2、修改pom 这两个依赖是自定义插件必须依赖,代表了它是一个Mojo工程,里面包含了一些Mojo接口和抽象类以及注解...defaultPhase =LifecyclePhase.PACKAGE声明了该插件触发生命周期。 @Mojo定义插件goal名字。...相对应,在插件消费者配置中我们就应该相应给出参数定义: 上面的配置与变量名一一对应即可。

    67630

    Mavenmaven 插件开发实战

    AbstractMojo 这个抽象类,这里是 maven 插件规范要求,maven 插件必须要继承 AbstractMojo 并实现他 execute 方法。...,我们类必须继承 AbstractMojo 并实现他 execute 方法,而 execute 方法其实就是这个插件入口类。...另外一个重要注解 @Parameter ,则是用来指定插件运行时使用参数,其中 name 是参数名,defaultValue 顾名思义是默认值,也就是在用户没有设置时候使用值。...如果上面配置都正确,那么在 idea 右侧 Maven 中,你配置项目的 Plugins 下会多了一个 demo(具体根据你插件项目的名称),而 demo 里面会有一个 demo:hello,其中这个...demo 对应你插件项目的名称,而 hello 对应你插件名称也就是 @Mojo name 。

    1.8K40

    Idea开发maven插件

    文章目录 场景描述 插件功能 插件开发 第一步:创建插件项目 第二步:插件实现 2.1 声明mojo类(插件) 2.2 添加参数 2.3 execut方法实现自定义插件功能 2.4插件使用 场景描述 最近博主开发了一个用于接收数据接口服务器...于是乎,博主又开始耍小聪明了,能不能让配置组打包时候加个参数什么来实现对常量类修改,博主找遍了整个互联网都没找到这样插件(或者说操作简单,兼容性好插件),所以博主打算自己开发一个maven插件...插件功能 通过mvn指令传递参数来实现打包前修改项目源码。 插件开发 第一步:创建插件项目 IDEA新建一个maven项目,注意选择maven-archetype-mojo这个模板 ?...2.1 声明mojo类(插件) 有两种方式声明一个类是mojo类,一种是通过文档注解方式,如下所示: /** * @goal ChangeConstant */ 另外一种是通过添加@Mojo(name...default" ) private String filePath; 2.3 execut方法实现自定义插件功能 这里博主希望在打包前对常量类做修改,常量类如下,如果是内部源,则将对外监控那四个常量注释掉

    1.2K10

    maven:通过自定义maven插件运行启动自定义应用服务

    mvn tomcat7:run 参见 《maven 配置tomcat插件启动》 如果我们也想像tomcat一样,用maven直接启动自己应用服务,应该怎么做呢?...所以如果要实现自定义应用服务用maven启动,就是要实现一个类似的插件,将自己服务启动操作放在插件中执行,关于开发自定义插件基本知识不是本文重点。...注意:自定义插件pom.xml中package类型应该定义为maven-plugin 发布到仓库 有了自定义插件,当然要把它发布到仓库(maven中央仓库...自定义maven插件听上去是个好高大上东西,其实并不复杂,只要继承org.apache.maven.plugin.AbstractMojo实现execute抽象方法,就完成了一个最简单插件。...tomcat插件也是这么干,waitIndefinitely方法代码就是tomcat7-maven-plugin插件源码中直接抄过来

    1K10

    让我们一起做Maven实战,纯干货

    优点: 1> 简单 2> 持续集成CI 3> 构建简单 4> 插件丰富 5> 约定优于配置 二、下载安装 下载:官网http://maven.apache.org/ 下载即可 安装:将下载好包解压...、配置环境变量即可 Maven加载配置文件优先级:用户目录/.m2/settings->自己安装Mavenconfig/settings.xml 三、pom.xml常用节点含义 modelVersion...五、常用插件 1、上面提及了修改版本号问题,这里可以引入如下插件 org.codehaus.mojo versions-maven-plugin...api包删除再重新拉取,这个效率就太低了,可以使用mvn clean package -U 强制去远端拉取一次 九、自定义插件 step1:新建maven项目 step2:修改packaging标签为:...* @Mojo 定义插件相关信息 */ @Mojo(name="conan",defaultPhase = LifecyclePhase.PACKAGE) public class XyMojo

    51630

    Maven进阶》1.maven 项目生命周期与构建原理

    maven项目的三个不同角度,定义了单套生命周期,三套生命周期是相互独立,它们之间不会相互影响。...maven通过为某一个项目的生命周期阶段绑定若干个Mojo,然后依次执行Mojo.execute()方法,从而实现特定生命周期应该执行动作。...读取pom.xml内配置信息,这里attribute对应着pom.xml里配置,如果在这里声明了,maven在创建Mojo 实例 instance时候,会将这些值注入到instance...maven会根据Mojo功能划分,将具有相似功能Mojo放到一个插件中。并且某一个特定Mojo能实现功能称为 goal,即目标,表明该Mojo能实现什么目标。 ?...有多少插件,每个插件都干了什么,你可以访问 maven plugin主页了解 : http://maven.apache.org/plugins/index.html 写在最后 本文旨在向读者介绍

    93020

    青铜到王者,Maven全了解

    Maven是每个Java程序都会遇到包管理工具,今天整理一下Maven相关知识,青铜到王者,一文全了解 1、maven是什么,为什么存在?...选择本地仓库位置,和自定义setting配置 ? 一路finish,然后等待idea 创建模板项目就好了。...为goal实现类,它继承于AbstractMojo,有一个execute方法,goal等定义都是通过在mojo里定义一些注释anotation来实现maven会在打包时,自动根据这些anotation...插件 Maven核心仅仅定义了抽象生命周期,具体任务都是交由插件完成。...Maven生命周期与插件目标相互绑定,以完成某个具体构建任务,例如compile就是插件maven-compiler-plugin一个插件目标。

    45520

    Java Maven POM配置参考

    有三种方法可以处理这种情况。 使用安装插件在本地安装依赖项。该方法是最简单推荐方法。...这种方法好处是显而易见。可以集中在一个中心位置设置依赖关系详细信息,并传播到所有继承POM。 请注意,可传递依赖项合并工件版本和作用域也由依赖项管理部分中版本规范控制。...默认true. configuration: 这是特定于单个插件插件Mojo可能期望任何属性(这些是Java Mojo bean中getter和setter)都可以在这里指定。...在子POM中使用这些属性可以控制Maven如何将父级插件配置与子级显式配置相结合。...这样做功能是更改插件依赖项列表,可能是通过exclusions删除未使用运行时依赖项,或者更改所需依赖项版本。 executions:记住,一个插件可能有多个目标。

    53730
    领券