問題タブ [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.
java - MavenCli (maven-embedder) を介して Maven タスクを実行できない
MavenCli.doMain
プログラムでMaven Embedder 3.3.3を使用してMavenゴールをプログラムで実行していますが、メソッドを実行するたびに次のエラーが発生します:
-Dmaven.multiModuleProjectDirectory
システム プロパティが設定されていません。$M2_HOME
環境変数とmvn
スクリプトの一致を確認してください。
java - Maven Embedder - hibernate3:hbm2java をプログラムで実行
** アップデート **
エラーの再現を試み、最小限、完全、かつ検証可能な例を作成しようとしました。残念ながら、最初から再起動する手法を実行した後でも、自分でエラーを再現することさえできないようです...
hibernate3:hbm2java コマンドを手動で実行すると、アプリケーションが動作します。
それでも、プログラム的には機能しないようです。
アプリケーションを実行すると、巨大なエラー ログが表示されます。上の数行は次のとおりです。
私の設定をこのレポにプッシュしました。機能するには、pw: "password" を含む (in mem) MySQL データベースが必要です。
https://github.com/Weirdfishees/reverse-engineering.git
これが私の構成です:
ポンポン:
hibernate.cfg.xml
reveng.xml
そして、application.java
私の質問は同じままです。
上記の構成で hibernate3:hbm2java をプログラムで実行するにはどうすればよいですか?
-- 再現できませんが、追加情報 --
序章
こんにちはスタックオーバーフローユーザーの皆さん、Maven Embedder の使い方について質問があります。
実際のコード部分に要約する前に、私の質問の文脈を共有したいと思います。
ユーザーからの入力を受け取る GUI アプリケーション (javaFX) を構築しています。この入力に基づいて、アプリケーションは 2 つの hibernate 構成ファイル (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;DR
Maven Embedder を使用しているときに java.lang.NoSuchMethodError を修正するにはどうすればよいですか?
与えられた:
java - Maven Embedder: コマンド オプションを追加する方法
私は次のようにMaven Embedderを使用しています:
これは機能し、コマンドラインコマンドを実行するのと同じです
ディレクトリ内
ただし、Maven Embedder がコマンド ライン コマンドと同等の機能を実行するように、Maven にオプションを指定する必要があります。
これはどのように行うことができますか?
scala - MavenCli - stdout、stderr
私は を使用しようとしておりMavenCli
、ByteArrayOutpurStream
-s asstdout
およびを指定していstderr
ます。一部のレコードがそれらのストリームに書き込まれたことを確認するテストがあります。テストが 1 つあれば、すべて問題ありません。しかし、別のテストを導入すると、stdout に何も書き込まれないため失敗します。
ここにスニペットがあります(Scala):
"write something"
テストをコメントアウトすると、"write something else"
パスします。
"write something else"
testをコメントアウト(およびコメント解除"write something"
) すると、"write something"
パスします。
両方がコメント解除されて実行された場合、一方が失敗します ("write something else"
シーケンシャルであるため)。
println
-s ofoutStream
をmaven実行後に追加すると、原因outStream
は空であるようです...
理由、またはさらに重要なことに、回避方法がわかりません。
何か案は?...
前もって感謝します、オハッド
java - Maven Embedded 3.3.9 - 可能ですか?
そのため、シェルラッパーを使用するのではなく、コードにmavenを埋め込もうとしていますが、実際に機能させるのに問題があります。
ブランチはmaster
機能しますが、古いバージョンの maven (3.1.1) であり、より新しいバージョンを使用したいと考えています。
339
ブランチには、pom.xml で定義されたそのバージョンについて突き止めることができるすべての依存関係があります。
ただし、依存関係をいじっても、次のエラーを回避するのに役立ちません。
私はたくさんのメーリングリストを見つけて読むことができるすべての SO の質問に目を通しましたが、これをしたいと思っている人はほとんどいないか、単に失敗しているようです。
いいですか、皆さん何か考えがありますか?
java - Maven-Embedder を使用して、Java から Maven プロジェクトを実行したときにログを取得するにはどうすればよいですか?
いくつかの Maven プロジェクト用の小さな監視ツールを作成したいと考えています。
開発中に実行する必要がある 3 つのサーバー アプリケーションがあります。現在、それらを実行する小さなシェル スクリプトがありますが、ログを表示するときに驚くほど不正確であり、再起動してプロセスを強制終了するのが面倒です。これも Windows では動作しません。そのため、ステータスやログなどをリアルタイムで表示するのを最適化するために、他の開発者向けの小さな監視ツールが必要です。
Maven エンベダーを使用していますが、MavenCli を実行してもログが表示されません。
Maven プロジェクトのログ ストリームにアクセスするにはどうすればよいですか? printlines とエラーにアクセスできます。
私のコードのベースラインは次のとおりです。