嵌入Maven

这是一个非常罕见的用例,但有时您需要它。 如何在应用程序中嵌入Maven,以便可以以编程方式运行目标?

简短的答案是:这很棘手。 我涉足了我的java webapp自动同步项目的问题 ,有时我决定不嵌入它。 最终,我使用了可以满足我需要的库,但是无论如何,以下是可能有用的步骤和工具。

通常,嵌入式Maven需要的是在Maven项目中执行一些目标。 有两种情况。

第一个是,如果您正在Maven容器中运行,即正在编写Mojo /插件。 然后,这很容易,因为您可以通过已初始化的plexus容器管理所有内容。 在这种情况下,您可以使用mojo-executor 。 易于使用,但是需要一个“项目”,“ pluginManager”和“会话”,您无法轻松获得它们。

第二种情况是完全嵌入的Maven。 有一个图书馆可以满足我的需要(感谢MariuszS指出了这一点)–它是Maven Embedder 。 此SO问题中描述了它的用法。 使用第一个和第二个答案。

在找到该库之前,我尝试了另外两个库: jenkins maven Embedded和Maven Invoker 。 这两个库中的问题是:它们需要一个maven家。 即,maven安装所在的路径。 这有点与“嵌入式”专家的想法相反。 如果Maven Embedder适合您,则可以停止阅读。 但是,在某些情况下,Maven Embedder可能不是您想要的。 在这种情况下,您应该使用上述两个库之一。 那么,如何找到并设置行家呢?

  • 要求用户指定它。 可能不太麻烦
  • 使用M2_HOME。 其中一个库默认情况下使用该库,但问题是可能未设置它。 例如,我通常不设置它。 如果不是这样,则可以退回到以前的方法
  • 扫描整个文件系统以进行Maven安装-听起来不错,并且只能执行一次,然后存储在某个条目中。 问题是–可能没有maven安装。 即使是开发人员的机器,IDE(至少是Eclipse)都有一个“嵌入式”专家。 尽管它可能以手动安装的相同格式将其存储在内部某个位置,但它可能会根据版本而更改其路径或结构。 当然,您可以不时地重新扫描文件树以找到这样的安装
  • 自己以编程方式下载Maven。 然后,您可以确定它的位置,并且始终将其以相同的格式放置在该位置。 这里的问题是版本不匹配–用户可能正在使用其他版本的maven。 使版本可配置是一种选择。

所有这些在某些情况下均有效,而在另一些情况下则无效。

因此,按照优先顺序:

  1. 确保您确实需要嵌入行家
  2. 使用Maven嵌入器
  3. 使用其他选项及其含义。

参考:在Bozho的技术博客博客中将Javen 合作伙伴 Bozhidar Bozhanov的 Maven嵌入 。

翻译自: https://www.javacodegeeks.com/2013/11/embedding-maven.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/366597.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

200行代码写一个简易的dva

在美团实习的时候,第一次接触到dva这样的react框架,回学校的时候,就想有机会自己实现一下这样的框架,虽然自己水平有限,但是可以试一试哈。 目标是实现dva model的同步和异步 dispatch action。 看看 dva 的构成 let…

linux 切换root_Linux运维服务篇:流量监控工具iftop部署及详细参数分享

Linux流量监控工具--iftop介绍:在类Unix系统中可以使用top查看系统资源、进程、内存占用等信息。查看网络状态可以使用netstat、nmap等工具。若要查看实时的网络流量,监控TCP/IP连接等,则可以使用iftop。一、iftop是什么?iftop是类…

Python特殊函数

exec():执行动态的字符串代码,和eval类似,不过eval接受表达式。 它可接受:1.代码字符串 2.文件对象 3.代码对象 4.tuple >>> exec(a2) >>> a 2 >>> exec(print(\5\)) 5 eval():接受一个字…

Java7 –回顾

我开始写博客文章,介绍即将发布的Java8版本中的新增功能 ,并认为我将从快速回顾一下Java7带给我们的内容开始。 Java7于2011年7月发布,被描述为“更具进化性而非革命性”。 “有一些重大的改进,但是并没有真正令人惊叹或突破性的…

皖西学院计算机证书,下半年皖西学院计算机等级考试报名时间

根据《皖西学院2017下半年全国计算机等级考试报名通知》得知,2017下半年全国计算机等级考试报名时间7月3日上午09:00分至7月18日17点30分。下面yjbys小编就为大家分享一篇皖西学院计算机等级考试报名具体内容,希望大家认真阅读!一、报名及网上缴费时间&a…

RabbitMQ安装以及集群部署

本次记录安装RabbitMQ的过程,只针对MAC下单机版安装、单机集群安装方法以及配置haproxy负载均衡。 RabbitMQ单机版本安装RabbitMQ单机集群安装方法(适合开发练习)RabbitMQ配置haproxy负载均衡RabbitMQ集群测试(待续)参…

前端通过spark-md5.js计算本地文件md5

背景:说到本人第一次使用spark-md5.js还是差不多一年以前的时候了,当时后台老大说要搞一个文件分片上传的功能。我当时就心想:what?啥是文件分片上传,完全没听过好吗?至于我当时内心那个慌就不多描述了&…

r 保留之前曲线_生存曲线居然能够批量绘制了

生信分析第三步:生存曲线批量绘制各位解螺旋的小伙伴大家好,我是先锋宇,欢迎大家来到每周日的先锋宇专栏,经过前两期推文的学习,很多小伙伴都私信我说从先锋宇助教的专栏很接地气,自己能够开始慢慢处理数据…

关于窗口的一些小脚本

一般窗口分为两种情况 : 1、window.open 浏览器样式窗口 ⑴ 属性:window.open(index.html, newpage, height800, width60, top20, left50, toolbarno, menubarno, scrollbarsno, resizableno, locationno, statusno) 参数:window.open 弹出新…

基于vue自动化表单实践

背景 B端系统表单较多,且表单可能含有较多字段字段较多的表单带来了大片HTML代码在大片HTML中,混杂着参数绑定、事件处理等逻辑,不利于维护技术栈 Vue,Element(默认表单布局)适合中后台项目快速开发 目标 通过json配置快速生成表单…

天津科技大学计算机学院复试分数线,2021天津科技大学研究生复试分数线

2021天津科技大学研究生复试分数线已经公布,包含学术学位、专业学位、专项计划复试分数线,供大家参考,如意了在此祝广大考研学子都能顺利上岸。一、2021年天津科技大学研究生分数线1.专业分数线各学院严格执行《2021年全国硕士研究…

使用Eclipse Hibernate插件逐步为POJO域Java类和hbm自动生成代码

概述: 在本教程中,我们将使用Eclipse Hibernate工具自动生成域对象和相应的hbm xml文件。 如果您正在处理大型或中型项目,并且开始时有超过5个以上的表,则可能会发现此插件是自动生成映射域对象java文件和相应* .hbm.xml的绝佳工具…

idea本地跑如何看gc日志_线上故障如何快速排查?来看这套技巧大全

简介:有哪些常见的线上故障?如何快速定位问题?本文详细总结工作中的经验,从服务器、Java应用、数据库、Redis、网络和业务六个层面分享线上故障排查的思路和技巧。较长,同学们可收藏后再看。前言线上定位问题时&#x…

【第七次JAVA课,java语法基础】课件总结

没上课,不写总结! 空着,会专门写篇总结java的io和nio的随笔。 转载于:https://www.cnblogs.com/limitCM/p/9997971.html

计算机技术与分析化学论文,分析化学(论文).doc

分析化学(论文)分析化学在生活中的应用化学化工学院 胡成摘 要:通过简单介绍有关分析化学在食品安全、药品检测、化妆品研究和环境监测的应用,阐明分析化学在人类生活中的重要作用。关 键 词:分析化学 食品安全 药品检测 化妆品研究 环境监测…

从零打造在线版H5页面生成器

想必你一定使用过易企秀或其它微场景生成工具制作过炫酷的h5页面,除了感叹其神奇之处有没有想过其实现方式呢?从设计者的角度来看待问题,会有不一样的收获,本文将从零开始,使用node技术来设计实现一款精简版的易企秀 G…

使用Struts2,Hibernate和MySQL BLOB开发个人迷你相册应用程序–第1部分

概述: 在本研讨会中,我们将开发一个Web应用程序,可用于创建漂亮的照片库。 您可以将其托管在Web服务器中,也可以在自己的PC中使用以维护和管理照片集。 使用本教程,您将能够了解与Struts2和Hibernate相关的以下重要内容…

Activity并行网关和排他网关

说一说activiti中的排他网关和并行网关 activiti工作流中我们经常用到的网关有两种: 1. Exclusive Gateway 排他网关 排他网关.png 排他网关(也叫异或(XOR)网关,或更技术性的叫法 基于数据的排他网关)&…

ValueError: too many values to unpack

Error msg: 执行: python manage,py makemigrations 报错:Value: too many values to unpack 问题: django第一次数据库迁移之后, apps中的model位置改变了, 导致之前生成的迁移文件检测不到原来的位置 解决: 删除所有的迁移文件重新迁移, 或者将之前的迁移文件的路径修改正确 …

安徽省计算机二级考试vfp试题,安徽省计算机二级VFP考试理论模拟试题附答案

《安徽省计算机二级VFP考试理论模拟试题附答案》由会员分享,可在线阅读,更多相关《安徽省计算机二级VFP考试理论模拟试题附答案(19页珍藏版)》请在人人文库网上搜索。1、一、单项选择题(每题1分,共40分) 1. 计算机能够自动工作,主…