电商网站建设特色,计算机专业主要学什么内容,网站常用图片,中山网站建设哪家好这是一个非常罕见的用例#xff0c;但有时您需要它。 如何在应用程序中嵌入Maven#xff0c;以便可以以编程方式运行目标#xff1f; 简短的答案是#xff1a;这很棘手。 我涉足了我的java webapp自动同步项目的问题 #xff0c;有时我决定不嵌入它。 最终#xff0c;我… 这是一个非常罕见的用例但有时您需要它。 如何在应用程序中嵌入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。 使版本可配置是一种选择。 所有这些在某些情况下均有效而在另一些情况下则无效。 因此按照优先顺序 确保您确实需要嵌入行家 使用Maven嵌入器 使用其他选项及其含义。 参考在Bozho的技术博客博客中将Javen 合作伙伴 Bozhidar Bozhanov的 Maven嵌入 。 翻译自: https://www.javacodegeeks.com/2013/11/embedding-maven.html