2016-05-18 4 views
1
Mavenの documentationで述べたように

Mavenのコンパイラがバージョン1.5にデフォルト設定されているのはなぜですか?

現時点では独立してJDKのあなたとMavenを実行し、デフォルトのソースの設定は1.5で、デフォルトの目標設定は1.5です。

個々のプロジェクトでこれを変更することができますが、JDKを無視するように選択された理由はわかりません。確かに、バージョンを検出してソース設定に使用する方が直観的でしょうか?

+0

あなたはその決定をした人に尋ねなければなりません。 – Kayaman

+0

JDKとソース/ターゲットとの間に実際の関係はありません – khmarbaise

+0

2つの間に実際の関係がないのはなぜですか? –

答えて

3

構成を簡単にするため、妥当なデフォルト設定を選択しました。これにより、そのデフォルト設定を使用するすべてのプロジェクトにその設定が含まれなくなります。彼らは、最も一般的な価値だと思ったものを選んでデフォルトにしました。

今、長年が過ぎました。ほとんど誰もそのデフォルト値を使用したくない。これで明示的に値を設定する必要があります。

デフォルトでJDKのバージョンがデフォルトにならないのはなぜですか? JDKをアップグレードすると、既存のプロジェクトが破損する可能性があるためです。

デフォルト値を最新のプロジェクトで使用するように変更してみませんか?これは、デフォルトを使用する既存のプロジェクトを壊す可能性があるためです。

2

ここで考慮すべき点がいくつかあります。

「現在の」というフレーズは、デフォルトを選択するためのロジックが将来的に改善または強化される可能性があることを示唆しています。しかし、私は息を止めません。

デフォルト値を選択する(または悪化させる)のは、Robが指摘した理由と同じ理由から、常に困難なビジネスです。あなたは苦情を喚起し、他の人たちに大きな問題を引き起こしますか?それとも、眠っている犬に嘘をつき、時代遅れのデフォルトを維持するのですか?どちらの選択も理想的なものではないので、「何もしないでください」が勝ちます。変化をもたらすリスクは利益を上回ります。

おそらくkhmarbaiseとは、Mavenのデフォルト値と使用しているJDKとの間には何の関係もないということです。それが正しいかどうか、どちらの場合でもMavenができることは何もありません。すべてのMavenについては、あなたのマシンに5つの異なるJDKがあるかもしれません。あなたが使っているプロジェクトやプロジェクトを知る方法がありません。

デフォルトを1.8にアップデートすると、変更する前にデフォルトを使用できない人が多くいる可能性があります。 (合理的な仮定は少ないと仮定しても、それはまだ仮定です。)デフォルト値が何であっても、誰かがカスタム設定を使用する必要があります。だから、なぜ人々のどのグループが心配ですか?デフォルトは便利です。これ以上何もない。

目的は、一貫した動作を提供することです。デフォルトを変更することは、その目標に反して行われます。 Mavenがその一貫性を提供していることを知っていることは、プロジェクトのJDKレベルをカスタマイズするために数行のXMLを追加することができない人からの苦情を受け入れる価値があるでしょう。

0

Javaアノテーションとジェネリックがバージョン1.5で導入されました。レベルをそれより低く設定すると、書かれたJavaコードの非常に大きな部分が破損します。バージョン1.6と1.7で導入された機能はありましたが、ジェネリックスや注釈として広く使用されていませんでした。しかし、1.6を必要とする多くのJ2EEアーチファクトがあります。膨大な量のコードは1.5で動作するので、合理的なデフォルトと見なされました。

関連する問題