問題タブ [maven-compiler-plugin]
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 - Mavenリリースプラグインを壊さずに、コロンを含む複数のコマンドライン引数をjavacに渡すにはどうすればよいですか?
Serializable
クラスで serialVersionUID を宣言するのを忘れたときに、Maven ビルドが失敗するようにしたいと考えています。を使えばjavac
簡単です:
それをMavenに直接翻訳してもうまくいきません:
はcompilerArgument
引用符で囲まれているため、個別の引数としてとの代わりにjavac
, を含む 1 つの引数のみを受け取ります。したがって、ドキュメントを読んで、次のことを見つけます。-Xlint:serial -Werror
-Xlint:serial
-Werror
compilerArguments
これは奇妙に見えます-コロンは名前空間にserial
要素を作成しXlint
ますが、これはどこにも宣言されていません-しかし、それは機能します...リリースを行うまで:
$ mvn release:prepare
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.3.2:prepare (default-cli) on project my-project: Error reading POM: Error on line 58: The prefix "Xlint" for element "Xlint:serial" is not bound.
どうやら、通常の POM リーダーは、リリース プラグインで使用されるものとは別の方法で XML 名前空間を処理します。
javac
では、複数のコマンド ライン スイッチに、プレーンな XML 要素に対して有効でない文字が含まれている場合、リリース プラグインを壊さずに渡すにはどうすればよいでしょうか?
java - デフォルトの注釈プロセッサ検出プロセスとは何ですか?
Maven Compiler プラグインのドキュメントには、次のことが記載されています。
注釈プロセッサ:
実行する注釈プロセッサの名前。JDK 1.6+ にのみ適用されます。設定されていない場合は、デフォルトのアノテーション プロセッサの検出プロセスが適用されます。
ここでのデフォルトの注釈プロセッサの検出プロセスは何ですか? この構成タグ以外に注釈プロセッサを設定する方法はありますか?
Annotation Processing Tool (apt) の使用を開始するドキュメントにデフォルトの検出手順が記載されていることがわかりましたが、これはプロセッサではなくファクトリ クラスで動作し、残念ながらJDKのtools.jar
およびパッケージを使用しています。com.sun
これはデフォルトの注釈プロセッサの検出プロセスですか?
java - Maven webapp "javac:-endorseddirsには引数が必要です"
maven-compiler-pluginを使用するMavenWebアプリがあります。数日前、アプリを正常にコンパイルして実行できましたが、何かが発生し、コンパイルが失敗して次のエラーが発生しました。
コンパイラと関係がありますが、理解できません。これが私のpom.xml(プラグインだけ)です:
私はこのようないくつかの解決策を試しました。
maven - コンパイルされたクラスは、Maven の目標「コンパイル」とターゲット フォルダーに自動生成されたものとは異なります
Spring3+Maven+Tomcat6 Web プロジェクトで..
REST APIコントローラーで同じRequestMappingを使用しようとしています。
なぜなら.. 使用方法が異なる別の戦争が必要だからです。
そのため、同じ名前のコントローラーを生成しましたが、パッケージは異なります。
例:
1. xxx.controller.agent.UserController
2. xxx.controller.console.UserController
1. maven -> build(war:war) -> get console.war include xxx.controller.agent.UserController
2. testExcludes と excludesのコメント行のコメントを外し
ます 3. testExcludes のコメント行をコメント解除しますおよび除外
4. maven -> プロジェクト構成の更新
5. maven -> ビルド (war:war) -> エージェント war の取得 xxx.controller.console.UserController を含める
しかし、各 war ビルドの pom.xml を編集したくありません。Mavenプロファイル要素を使用して各warファイルを構築しようとしています。そのため、以下に示すように pom.xml を編集しました。
そして Maven ビルド.. (goal="package" または "compile war:war", profile="console" または "agent" それぞれの場合)
ビルドは成功しました..(コンパイル エラーなし) しかし、war は異常です。
war ファイルを tomcat webapp ディレクトリにコピーし、startup.bat ファイルを実行します。
コンソール ログでは、非常に多くのエラーが発生しました。
たぶん、maven compile に問題があると思います.war
ファイルを各ビルド方法 (プロファイルと古い方法を使用) で展開しました。
しかし、クラスファイルの数が異なっていました...
ご協力ありがとうございます。
maven - Mavenのメモリ不足ビルドエラー
今日の時点で、私のMavenコンパイルは失敗します。
[エラー]メモリ不足。メモリの量を増やすには、起動時に-Xmxフラグを使用します(java -Xmx128M ...)
昨日の時点で、Mavenコンパイルを正常に実行できました。
今日の時点で、ヒープを3GBに増やしました。また、2〜3行のコードを変更しただけなので、この「メモリ不足」エラーはわかりません。
編集:失敗したモジュールのpom.xmlを変更して、投稿者のコメントを試しました。しかし、同じMavenビルドエラーが発生しました。
maven-3 - 間に exec プラグインを入れて maven コンパイルを 2 回実行するにはどうすればよいですか?
プロジェクトからインターフェイス A を読み取り、そこから新しいインターフェイス B を生成する単純なコード ジェネレーター G があります。したがって、私はこれを達成する必要があります:
- コンパイルA
- Gを実行
- コンパイル B
ステップ 1 と 3 は maven-compiler-plugin によって処理されますが、ステップ 2 では maven-exec-plugin を使用します。現在、ステップ 1 と 2 はうまく機能していますが、コンパイラ プラグインを再度実行して、新しく生成されたバージョンの B をコンパイルする方法がわかりません。
これはmavenで可能ですか、それとも私の問題を解決する別のアプローチがありますか?
解決:
khmarbaise の回答に基づいて、これを pom.xml に追加して、generate-sourcesフェーズで最初のコンパイルを実行し、 process-sourcesフェーズでコード生成を実行して、生成されたクラスをコンパイルフェーズで使用できるようにします。
java - カスタム アノテーション処理、ドキュメントの生成、および Maven 3
私の目標は、特定のパッケージの Java クラスを「読み取り」、そのパッケージ内のクラスとそれらのクラス内のメソッドで Javadoc と注釈を (できれば同時に) 処理することです。maven-compiler-plugin
ソリューションは Java 6 または 7 で実装する必要があります。ビルド ツールは Maven 3 です2.5.1
。
私が理解しているように、javax.annotation.processing
クラスの目的はこの種のことを行うことであり、この他のSO回答の行に沿ったJavaコードは私の目的のために機能するはずですが、実際に実行する方法の実際の詳細はまだです少しぼやけています。
そうは言っても、ここに私が必要だと思うものがあります:
- 必要な注釈と Javadoc 項目を選択し、それらの項目をカスタム ドキュメントの作成に必要なデータ モデルに変換する Java コード。
- このデータ モデルをドキュメント ファイルまたはファイルのディレクトリに書き出すための Java コード
- Maven 3 の構成:
- アノテーション プロセッサを適切なタイミングで 1 回実行する
- 生成された docs ディレクトリを出力された war ファイルに含めます
Maven のビットは、Java コードよりも私をつまずかせるので、半分しか答えない場合は、その半分にチェック マークを付けます。また、このアノテーション プロセッサは、使用しているいくつかのカスタム アノテーションと非常に密接に結合されるため、別のプラグインとして Maven リポジトリに配置しないことをお勧めします。
これは、私自身の答えを合成することができなかった関連として見つけた質問の簡単なリストです。
java - MavenでJavaコードをコンパイルする際のArrayIndexOutOfBoundsException
実行時にのみ次のエラーが発生しますmvn clean
:
私が使用している環境は次のとおりです。
- Eclipseガリレオ
- Java 1.6.0_34(64マシンで32ビット)
- JBoss Seam 2.2
- JBoss AS 5.1
何が問題なのですか?
maven - src/main/java からではなく、変更されたコード (delombok'd) から Maven をコンパイルするにはどうすればよいですか?
delombok maven プラグインを使用すると、すべてのファイルが「target/generated-sources/delombok」に配置されます。Mavenコンパイラを実行しようとすると、クラスの重複について不平を言うので、この質問が推奨するようにaddOutputDirectoryをfalseに設定します。現在の問題は、deombok されたファイルが無視されるため、コンパイラがメソッドの欠落について不平を言うことです。
デフォルトの 'src/main/java' ディレクトリを無視し、代わりに 'target/generated-sources/delombok' ディレクトリを使用してコンパイルするように Maven コンパイラ プラグインに指示するにはどうすればよいですか?
mvn compile -X を実行すると、コンパイラの実行時に次の出力が生成されます。
次に、コマンド ライン オプションが出力されている場所のさらに下に、-sourcepath 引数が次-sourcepath C:\Users\Jamey.Holden\workspace\Apollo\Website\src\main\java;C:\Users\Jamey.Holden\workspace\Apollo\Website\target\generated-sources\java;
のように表示されていることがわかります。
更新 私は問題の根底に到達していると思います。queryDSL を使用してメタエンティティを生成しているため、注釈処理を防ぐために proc=none を設定していましたが、これが注釈処理を回避するように設定されていない場合、コンパイラでエンティティが重複して検出されたというエラーが発生しました。proc=none と querydsl 注釈プロセッサを削除すると、問題が解決しました。これで、m2e を再び動作させることができました。
maven - Mavenコンパイラプラグイン、ビルドヘルパープラグインはクラスファイルを生成しません
既存のプロジェクトをMavenプロジェクトに変換しようとしています。3つのモジュールがあり、モジュールの1つに複数のソースフォルダーがあります。 http://i.imgur.com/jZCnR.png
MavenのクリーンアップとインストールまたはEclipseのクリーンアップでは、classesandtest-classesフォルダーにクラスファイルは作成されません。プロジェクト構造は、そこにクラスファイルがないことによって作成されます。
次のプラグイン構成は、親pomで定義されています。
私は何が間違っているのですか?