问题标签 [maven-embedder]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
353 浏览

java - 在机器上没有安装 Maven 可执行文件的情况下从 Java 运行 maven 目标

我正在尝试构建一个项目以从 SCM 签出代码并使用 maven 构建它。有没有一种方法可以在不提供 maven home 的情况下从 java 实现运行 maven 目标(没有安装 maven)。对于 SVN,我使用 svnkit 来实现相同的目的。对于 Maven,我尝试使用以下 2 个选项。

http://maven.apache.org/ref/3.0-beta-3/maven-embedder/ 谁能给出一个以编程方式使用 org.apache.maven.cli.MavenCli 的好例子?

对于上述两个选项,我需要安装 maven。有什么建议么?

0 投票
1 回答
1849 浏览

java - 无法通过 MavenCli (maven-embedder) 运行 maven 任务

我在我的程序中使用 Maven embedder 3.3.3 以编程方式运行 Maven 目标,每次运行该MavenCli.doMain方法时都会出现以下错误:

-Dmaven.multiModuleProjectDirectory系统属性未设置。检查$M2_HOME环境变量和mvn脚本匹配。

0 投票
1 回答
779 浏览

java - Maven Embedder - 以编程方式运行 hibernate3:hbm2java

** 更新 **

我试图重现该错误并尝试创建一个最小、完整和可验证的示例。不幸的是,即使在执行从头开始重新启动技术之后,我什至无法自己(我的)重现错误......

当我手动执行 hibernate3:hbm2java 命令时,该应用程序工作。

尽管如此,它似乎并没有以编程方式工作。

当我运行应用程序时,会显示一个巨大的错误日志。这里是前几行:

我已经将我的配置推送到了这个 repo。它需要一个(在内存中)带有 pw: "password" 的 MySQL 数据库才能工作。

https://github.com/Weirdfishees/reverse-engineering.git

这是我的配置:

起居室:

休眠.cfg.xml

reveng.xml

和 application.java

我的问题保持不变。

如何以编程方式运行以上配置的 hibernate3:hbm2java?

-- 不可重现 - 但附加信息 --

介绍

嗨,stackoverflow 用户,我对 Maven Embedder 的使用有疑问。

在我归结为实际的代码部分之前,我想与您分享我的问题的上下文。

我正在构建一个接收用户输入的 GUI 应用程序 (javaFX)。基于此输入,应用程序动态生成两个休眠配置文件(hibernate.cfg.xml 和 reveng.xml)。基于这些配置文件(提供连接详细信息),应用程序的以下所需功能是自动(无需用户交互)对数据库进行逆向工程并创建所有表的 POJO 类(自下而上开发)。

当我手动执行 mvn hibernate3:hbm2java 参数(使用命令行或简单地在 eclipse 中运行为 -> maven build.. -> 目标 mvn hibernate3:hbm2java)时,创建了包含我想要的所有类的所需包。

但是,目标是以编程方式执行 mvn hibernate3:hbm2java 而不是手动执行。

研究

我尝试了以下选项:

在 Windows 中从 Java 代码运行 Maven?

此选项不会引发任何错误,但是程序中似乎没有发生任何事情(在 eclipse 中刷新视图后,所需的类不存在......)

即使这个选项有效,由于应用程序的上下文(应用程序将跨平台使用),我更喜欢使用 Maven Embedder。

此外,我喜欢将 user3254289 的答案与使用 Maven Invoker 的建议一起使用

问题

基于 MariuszS 关于如何从 java 运行 maven 的问题给出的答案?

我已将我的应用程序配置如下:

pom依赖:

使用取自https://github.com/mariuszs/maven-cli-example的以下(调整后的)方法

出现以下错误:

基于Maven 3.0.4 NoSuchMethod: ... java.lang.NoSuchMethodError: com.google.common.collect.ImmutableSet.copyOf(..)

我对 MAVEN_HOME 变量进行了一些检查。因为我可以在 cmd 和 eclipse 中毫无问题地执行 mvn 命令,所以我认为这些设置是正确的(如果我错了,请纠正我)。

马文

爪哇

有谁知道如何克服这个错误并实现我想要的从 java 运行时自动触发 mvn hibernate3:hbm2java 的目标?

TL;博士

使用 Maven Embedder 时如何修复 java.lang.NoSuchMethodError?

鉴于:

0 投票
1 回答
609 浏览

java - Maven Embedder:如何添加命令选项

我正在使用Maven Embedder如下:

这有效,相当于运行命令行命令

在目录中

但是,我需要为 Maven 指定一个选项,以便 Maven Embedder 执行与命令行命令等效的操作

如何才能做到这一点?

0 投票
1 回答
308 浏览

scala - MavenCli - 标准输出、标准错误

我一直在尝试使用MavenCli,给它ByteArrayOutpurStream-sstdoutstderr. 我有一些测试可以验证某些记录是否已写入这些流。只要我有一个测试,一切都OK。但是,如果我引入另一个测试,它会失败,因为没有任何东西写入标准输出。

这是一个片段(Scala):

如果我注释掉"write something"测试,则"write something else"通过。

如果我注释掉"write something else"test (并取消注释"write something"),则"write something"通过。

如果两者都未注释并执行,则一个失败("write something else",因为它是顺序的)。

在maven执行后添加println-s outStream,原因似乎outStream是空的......

我无法弄清楚为什么,或更重要的是,如何解决。

有任何想法吗?...

在此先感谢, 奥哈德

0 投票
3 回答
908 浏览

java - 在 Maven 插件中调用 MavenCli 失败

我创建了一个小 util 来 wrap MavenCli,它使用快速入门原型生成一个新的 Maven 项目。

Util作为单元测试执行时,它工作得很好(只是生成一个空的 Maven 项目)。

现在我想将这个小包装器集成到一个 Maven 插件中。但是当我执行 mojo(在第三个 Maven 项目中)时,调用MavenCli失败并出现异常:

该实用程序看起来像:

util的相关依赖:

mojo 代码如下所示:

mojo 的 POM 仅包含对相关 Maven 工件(plugin-api、plugin-annotation 等)和 util.xml 的依赖项。

我提到的第三个项目是一个空的“maven-quickstart”项目,它依赖于 mojo-project 和 mojo 在编译阶段执行的配置。

我不知道为什么它在单元测试的上下文中起作用,但在 mojo 的上下文中却不起作用。

有人可以帮忙吗?

0 投票
1 回答
1327 浏览

java - Maven Embedded 3.3.9 - 有可能吗?

所以我试图将 maven 嵌入到我的代码中,而不是使用 shell 包装器,但是我在让它真正工作时遇到了问题。

源代码

master分支可以工作,但是它是 maven (3.1.1) 的旧版本,我想使用更新的版本。

339分支具有我可以为 pom.xml 中定义的该版本确定的所有依赖项。

但是,再多玩依赖项也不会帮助避免以下错误。

我已经完成了所有我能找到并阅读大量邮件列表的 SO 问题,但似乎很少有人想要这样做,或者我只是失败了。

各位大侠有什么想法吗?

0 投票
2 回答
102 浏览

java - 使java项目与maven集成

我正在尝试将 maven 与旧式 java 项目集成来管理依赖项。

要简单地下载罐子,我可以使用

但由于一些产品挑战,我需要自己将这些 jar 添加到 classPath 中。因此,如果有某种工具/解决方案可以帮助自动获取这些详细信息。就像所有 jar 包作为特定 pom.xml 的一部分下载的一样

示例:我可以在 java 代码中运行上述命令

并自己解析输出,但我想知道是否有更好的方法来代替我解析所有这些。

另外,请建议我处理这种情况的更好方法。

PS:我无法使用任何工具等将项目转换为 Maven 项目(因为我会更改项目的结构),而是我自己也有类似的行为

更新

我发现我可以使用 maven-embedder.jar 但我找不到太多帮助。我只想用于下载依赖项,即我的命令如下:

我怎么能这样做?

0 投票
0 回答
44 浏览

java - 当我使用 Maven-Embedder 从 Java 运行 Maven 项目时如何获取日志?

我想为几个 Maven 项目创建一个小型监控工具。

我有三个服务器应用程序,它们应该在开发时运行。我们目前有一个运行它们的小型 shell 脚本,但是在查看日志时非常不精确,并且令人讨厌重新启动它们并终止进程。这在 Windows 下也不起作用。这就是为什么我想为其他开发人员提供一个小型监控工具,以优化实时查看状态、日志等。

我使用 Maven 嵌入器,但是当我运行 MavenCli 时,没有出现任何日志。

如何访问 Maven 项目的日志流?可以访问打印行和错误。

我的代码的基线如下:

0 投票
1 回答
110 浏览

maven - 如何使用 Maven 以编程方式部署工件

我的任务是开发一个集成工具,该工具允许从源代码文件夹生成 WAR 或 OSGI Bundle,然后将其部署在 Tomcat 或 Karaf 中。我使用 Maven Embedder 创建工件,现在我的问题是如何配置我的 pom.xml 以自动部署这些工件。

在互联网上我找不到任何示例,而且我对 JEE 和 Maven 的世界还是新手。请帮我。