単純なJavaプロジェクトに選択するアーキタイプ


89

mvn archetype:generateは非常に多くのオプションを提供し、junitテストケースを使用して単純なJavaユーティリティを作成しようとしています。ここでどのアーキタイプを使用すべきか知りたいですか?


Maven入門ガイドを読むことをお勧めします。それは短く、多くの地面をカバーしています。
Sahil Muthoo 2011

回答:


16

を実行するmvn archetype:generateと、デフォルトの選択が中括弧で囲まれて表示されます()。たとえば(1274)、上にスクロールして#1274が何であるかを確認する場合、単純なJavaプロジェクトを実行する場合は、通常、デフォルトのJavaアーキタイプを試してみるか、最初から始めます。安全に選択できます。


そのデフォルトは3ではなく333になりました
TimP 2013

4
今です380: remote -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.)
slf 2014

1
それは例えば、ではない、すなわち、それは、デフォルトの選択が3であることを意味するものではないと言う
ああチンブーン

2
今では644です org.apache.maven.archetypes:maven-archetype-quickstart:1.1
aliopi

今は874です:)
miku 2016年

74

私は2つの原型を使用します。作成するアプリケーションの種類によって異なります。

Webアプリケーションが必要な場合は、maven-archetype-webappを使用します。単純なアプリケーションが必要な場合は、maven-archetype-quickstartを使用します。問題なく拡張できるので便利です。


1
これはデフォルトでEclipseプラグインにあることに注意してください(少なくとも今日はそうです)。
ベン

ここでは、maven-archetype-webappを作成し、mavenカタログをダウンロードしますが、エラーが発生します。
モーグリ

私は何をすべきか?
モーグリ

19

私は以下のようなコマンドを使用しています:

mvn archetype:generate -Dfilter=org.apache.maven.archetypes:

groupIdからのみachetypeの短いリストを取得しorg.apache.maven.archetypesます。始めるのに良いものはmaven-archetype-quickstartmaven-archetype-webapp私の前任者が言ったようにです。



7

私はあなたが使うべきだと思います maven-archetype-simple

編集

Mavenのドキュメントによると:

  • maven-archetype-quickstart サンプルのMavenプロジェクトを含むアーキタイプ。
  • maven-archetype-simple 単純なMavenプロジェクトを含むアーキタイプ。

4
maven-archetype-simpleEclipseの選択には表示されませんが、表示されますmaven-archetype-quickstart。彼らは同じですか?
huahsin68 2014年

Mavenのドキュメントを参照している後の編集をご覧ください。Eclipseプラグインに関して:私は個人的にpom.xml手動で編集し、コマンドプロンプトからコマンドラインを実行することを好みます。
AlexR 2014年

6

まず、必要なものだけを含む非常に単純なpom.xmlファイルから始めます。何かのようなもの

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-module</artifactId>
  <version>1</version>
</project>

http://maven.apache.org/guides/introduction/introduction-to-the-pom.htmlから


12
このアドバイスにはメリットがあるかもしれませんが、質問には答えられません。私が理解しているように、アーキタイプの要点は、開発者をこの種の定型文から救い、ベストプラクティスに従うのを容易にすることです。
Michael Scheper 2014年

3

The PracticalDeveloperの基本的なものを使用できます。

Java 8 +一般的に使用されるテストライブラリ:

mvn archetype:generate -DgroupId=[your-project-groupId] -DartifactId=[your-project-name] -DarchetypeGroupId=com.thepracticaldeveloper -DarchetypeArtifactId=archetype-java-basic-tpd -DarchetypeVersion=1.0.0

Java 9+一般的に使用されるテストライブラリ

mvn archetype:generate -DgroupId=[your-project-groupId] -DartifactId=[your-project-name] -DarchetypeGroupId=com.thepracticaldeveloper -DarchetypeArtifactId=archetype-java-basic-tpd -DarchetypeVersion=1.0.0 -Djava-version=9

これらには、JUnit 4、Mockito、AssertJ、およびjarファイルを実行可能にする場合のデフォルトのマニフェストファイルが含まれます。詳細:https//thepracticaldeveloper.com/archetypes/

免責事項:私はそのブログの著者です。


私は得るgroupIdが、何のarchetypeGroupIdために?
lupchiazoem

1
これは、Mavenリポジトリでアーキタイプを見つけるために使用されますarchetypeArtifactId
モイセス

0

maven-archetype-quickstartサンプルのMavenプロジェクトを含むアーキタイプ。maven-archetype-simple単純なMavenプロジェクトを含むアーキタイプ。

エラーが発生した場合は、MavenアーキタイプカタログをEclipseに追加して修正してください。手順は次のとおりです。

ウィンドウを開く>設定> Maven>アーキタイプ

クリックAdd Remote Catalogして、以下を追加します。

カタログファイル:http//repo1.maven.org/maven2/archetype-catalog.xml

説明:Mavenカタログ

注:最初のMavenプロジェクトの作成中は、インターネット接続が必要です。


上記のカタログをダウンロードして手動で設定しましたが、うまくいきませんでした。
モーグリ

0

デフォルトのアーキタイプ番号は10921092になりました:remote-> org.apache.maven.archetypes:maven-archetype-quickstart(サンプルのMavenプロジェクトを含むアーキタイプ)。


0

Javaアーキタイプを検討することをお勧めします。JUnitテストを含むベストプラクティスに従ってJavaプロジェクトをすばやく開始するための妥当なデフォルトがあります。私はそれをの現代の後継者として考えましたmaven-archetype-quickstart

例:mvn archetype:generate -DarchetypeGroupId=io.github.oliviercailloux -DarchetypeArtifactId=java-archetype -DgroupId=mygroupid -DartifactId=myartifactid -DinteractiveMode=false

免責事項:私は著者です。

代替案の詳細については、そのプロジェクトのREADMEの一部を参照してください(ここにコピーされているよりも多くのリンクが提供されています)。

公式クイックスタート原型

単純なJavaプロジェクトの公式アーキタイプ(ApacheのMaven入門ガイドおよびApache Mavenクックブックで言及)は、maven-archetype-quickstart、またはorg.apache.maven.archetypes:maven-archetype-quickstartの完全版です。

IMHOは、いくつかの弱点があるため、非推奨と見なす必要があります。

  • 重要な問題は、JUnit4に依存するプロジェクトを作成することです。現在のバージョンであるJUnit5は大幅に異なり、とりわけ改善されたAPIを提供します。
  • マイナーな弱点:デフォルトバージョンは1.0-SNAPSHOTであり、推奨される通常のスキームに従うには1.0.0-SNAPSHOTである必要があります。
  • もう1つの小さな弱点は、1.7JVM用に構成されたプロジェクトを作成することです。これは、特に古いインストールをサポートする必要がある場合に適切かもしれませんが、適度に新しいJVMを選択することは、新しいプロジェクトのより合理的なデフォルトルールです。たとえば、Java 8ではラムダ式が導入されましたが、これはおそらく見逃したくないでしょう。

私のアーキタイプは、デフォルトでロギングも提供します。これは便利だと思いますが、sysoutよりも拡張性が高く、害はありません。Guavaは、Javaを便利に充実させると思います。

MavenCentralの他のクイックスタートアーキタイプ

可能であれば取り組みに参加し、無駄な重複を避けるために、私は自分と同じ目的を持つ他のアーキタイプを積極的に探しました。つまり、最新のJavaプロジェクトを簡単に開始するための妥当なデフォルトを持つ単純なアーキタイプを提供します。(これは主に2020年6月頃に行われました。)

インターネットでの一般的な検索により、私はThe PracticalDeveloperにたどり着きました。連絡を受けたとき、彼は私に(電子メールで)自分の原型に定期的に取り組んでいないので、そのようなプロジェクトでの共同作業を辞退することを好んだと書いた。

ネットで検索しても他の有用な結果が得られなかったため、また自分のニーズに適した専用の検索ツールが見つからなかったため、単純な原型ブラウザーを実装しました。MavenCentralで利用可能なすべてのアーキタイプが一覧表示されます。手動で確認するには多すぎるので、長期的に維持されるプロジェクトを見つけることを期待して、groupIdとartifactIdが少なくとも3年前から存在し、昨年中に更新されたものを選択しました。おそらく質の高いプロジェクトです。(もちろん、このフィルターは、指定された目標に完全に一致する高品質のアーキタイプを見逃している可能性があります。私にはわかりません。適切な例として、このアーキタイプは、artifactIdを時間の経過とともに変更したため、そのフィルターを通過しません。)

次に、POMにあるアーキタイプの説明に基づいて、結果のリストを手動でフィルタリングし、それらの中でいくつかの有望なアーキタイプを(通常は公式Webサイトで)さらに調べました。com.github.ngeor:archetype-quickstart-jdk8適切な候補であることが明らかにされただけです。しかし、その作者は私に、「最近はアーキタイプをあまり使用/維持していない」と書いています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.