Loại nguyên mẫu nào để chọn cho một dự án java đơn giản


89

mvn archetype: create cung cấp quá nhiều tùy chọn và tôi đang tìm cách tạo một tiện ích java đơn giản với các trường hợp thử nghiệm junit. Tôi muốn biết tôi nên sử dụng nguyên mẫu nào ở đây?


Tôi khuyên bạn nên đọc Hướng dẫn Bắt đầu Maven . Nó ngắn và bao phủ rất nhiều mặt đất.
Sahil Muthoo

Câu trả lời:


16

Khi bạn thực hiện một mvn archetype:generate, một lựa chọn mặc định sẽ xuất hiện trong dấu ngoặc nhọn bao quanh (), ví dụ: (1274)nếu bạn cuộn lên để xem # 1274 là gì, nó thường là nguyên mẫu Java mặc định để thử hoặc bắt đầu, nếu thực hiện các dự án Java đơn giản, an toàn để lựa chọn.


mặc định đó bây giờ là 333, không phải 3
TimP

4
bây giờ là380: remote -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.)
slf

1
Nó nói ví dụ, không tức, vì vậy nó không ngụ ý rằng các lựa chọn mặc định là 3.
Oh Chin Boon

2
Bây giờ là 644 org.apache.maven.archetypes:maven-archetype-quickstart:1.1
aliopi

Nó bây giờ 874 :)
miku

74

Tôi sử dụng hai nguyên mẫu. Nó phụ thuộc vào loại ứng dụng bạn sẽ tạo.

Nếu bạn muốn có một ứng dụng web, hãy sử dụng maven-archetype-webapp hoặc nếu bạn muốn một ứng dụng đơn giản, hãy sử dụng maven-archetype-quickstart . Chúng hữu ích vì bạn sẽ có thể mở rộng chúng mà không có vấn đề gì.


1
Lưu ý rằng điều này nằm trong plugin Eclipse theo mặc định (ít nhất là hiện nay).
Ben

ở đây, tôi sẽ tạo maven-archetype-webapp và tải xuống danh mục maven nhưng gặp lỗi.
Mowgli

tôi nên làm gì?
Mowgli

19

Tôi đang sử dụng lệnh như dưới đây:

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

Tôi sẽ nhận được một danh sách ngắn các kiểu chỉ từ org.apache.maven.archetypesgroupId. Những điều tốt để bắt đầu là maven-archetype-quickstartmaven-archetype-webappnhư những người tiền nhiệm của tôi đã nói.



7

Tôi nghĩ bạn nên sử dụng maven-archetype-simple

BIÊN TẬP

Theo tài liệu maven :

  • maven-archetype-quickstart Một nguyên mẫu chứa một dự án Maven mẫu.
  • maven-archetype-simple Một nguyên mẫu chứa một dự án Maven đơn giản.

4
Tôi không thấy maven-archetype-simpletrong lựa chọn Eclipse của mình, nhưng tôi thấy maven-archetype-quickstart. Chúng có giống nhau không?
huahsin68

Vui lòng xem bản chỉnh sửa sau này của tôi đề cập đến tài liệu maven. Liên quan đến plugin eclipse: Cá nhân tôi thích chỉnh sửa pom.xmlthủ công và chạy dòng lệnh từ dấu nhắc lệnh.
AlexR

6

Tôi sẽ bắt đầu với một tệp pom.xml rất đơn giản chỉ có những gì bạn cần. Cái gì đó như

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

từ http://maven.apache.org/guides/introduction/introduction-to-the-pom.html


12
Mặc dù lời khuyên này có thể có giá trị, nhưng nó không trả lời câu hỏi. Theo tôi hiểu, toàn bộ điểm của các kiểu nguyên mẫu là giúp nhà phát triển thoát khỏi loại bảng soạn sẵn này và giúp dễ dàng làm theo các phương pháp hay nhất.
Michael Scheper

3

Bạn có thể sử dụng bất kỳ công cụ cơ bản nào từ Nhà phát triển thực tế:

Các thư viện kiểm tra thường dùng trong 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 + thư viện thử nghiệm thường được sử dụng

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

Chúng bao gồm JUnit 4, Mockito và AssertJ và một tệp kê khai mặc định trong trường hợp bạn muốn tệp jar của mình có thể thực thi được. Thông tin thêm: https://thepracticaldeveloper.com/archetypes/

Tuyên bố từ chối trách nhiệm: Tôi là tác giả của blog đó.


Tôi hiểu groupId, nhưng archetypeGroupIdđể làm gì?
lupchiazoem

1
Nó được sử dụng để định vị nguyên mẫu trong kho lưu trữ Maven, cùng với archetypeArtifactId.
Moisés

0

maven-archetype-quickstart Một nguyên mẫu chứa một dự án Maven mẫu. maven-archetype-simple Một nguyên mẫu chứa một dự án Maven đơn giản.

nếu gặp lỗi, hãy sửa nó bằng cách thêm danh mục nguyên mẫu maven vào eclipse. Các bước được cung cấp dưới đây:

Mở Window> Preferences> Maven> Archetypes

Nhấp Add Remote Catalogvà thêm những thứ sau:

Tệp danh mục: http://repo1.maven.org/maven2/archetype-catalog.xml

Mô tả: danh mục maven

LƯU Ý: KẾT NỐI INTERNET LÀ BẮT BUỘC TRONG KHI TẠO DỰ ÁN MAVEN ĐẦU TIÊN CỦA BẠN.


tải xuống danh mục ở trên và đặt theo cách thủ công nhưng không hiệu quả với tôi.
Mowgli

0

số kiểu mẫu mặc định bây giờ là 1092 1092: remote -> org.apache.maven.archetypes: maven-archetype-quickstart (Một kiểu mẫu chứa dự án Maven mẫu.)


0

Bạn có thể muốn xem xét Java Archetype : nó có các giá trị mặc định hợp lý để nhanh chóng bắt đầu một dự án Java theo các phương pháp hay nhất, bao gồm cả các bài kiểm tra JUnit. Tôi quan niệm nó như một sự kế thừa hiện đại của maven-archetype-quickstart.

Ví dụ: mvn archetype:generate -DarchetypeGroupId=io.github.oliviercailloux -DarchetypeArtifactId=java-archetype -DgroupId=mygroupid -DartifactId=myartifactid -DinteractiveMode=false.

Disclaimer: Tôi là tác giả.

Để biết thêm thông tin về các lựa chọn thay thế, đây là một phần của README của dự án đó (nó cung cấp nhiều liên kết hơn được sao chép ở đây).

Nguyên mẫu bắt đầu nhanh chính thức

Nguyên mẫu chính thức (được đề cập trong Hướng dẫn Bắt đầu Maven của Apache và Sách dạy nấu ăn của Apache Maven) cho các dự án Java đơn giản là maven-archetype-quickstart, hoặc org.apache.maven.archetypes: maven-archetype-quickstart đầy đủ.

IMHO nên được coi là không được dùng nữa, vì nó có một số điểm yếu.

  • Một vấn đề quan trọng là nó tạo ra các dự án phụ thuộc vào JUnit 4. Phiên bản hiện tại, JUnit 5, khác biệt đáng kể, cung cấp một API cải tiến khác.
  • Điểm yếu nhỏ: phiên bản mặc định của nó là 1.0-SNAPSHOT, phiên bản này phải là 1.0.0-SNAPSHOT để tuân theo sơ đồ được khuyến nghị và thông thường.
  • Một điểm yếu nhỏ khác: nó tạo ra các dự án được cấu hình cho 1.7 JVM. Điều này có thể phù hợp nếu bạn đặc biệt cần hỗ trợ các cài đặt cũ, nhưng việc chọn JVM gần đây hợp lý là quy tắc mặc định hợp lý hơn cho các dự án mới. Ví dụ, Java 8 đã giới thiệu các biểu thức lambda, mà bạn có thể không muốn bỏ lỡ.

Nguyên mẫu của tôi cũng cung cấp tính năng ghi nhật ký theo mặc định, mà tôi nghĩ là hữu ích, mở rộng quy mô tốt hơn so với sysout và không gây hại, và Guava, thứ mà tôi nghĩ sẽ làm phong phú thêm Java một cách hữu ích.

Các kiểu nguyên mẫu bắt đầu nhanh khác ở Maven Central

Để tham gia các nỗ lực nếu có thể và tránh trùng lặp lãng phí, tôi đã tích cực tìm kiếm các nguyên mẫu khác có cùng mục đích với tôi: cung cấp một nguyên mẫu đơn giản với các giá trị mặc định hợp lý để dễ dàng bắt đầu một dự án Java hiện đại. (Điều này chủ yếu được thực hiện vào khoảng tháng 6 năm 2020.)

Một tìm kiếm chung trên internet đã đưa tôi đến Nhà phát triển thực tế. Khi được liên hệ, anh ấy đã viết cho tôi (qua e-mail) rằng anh ấy không làm việc với nguyên mẫu của mình thường xuyên và do đó muốn từ chối cộng tác trong một dự án như vậy.

Vì các tìm kiếm trên mạng không cho thấy các kết quả hữu ích khác và vì tôi không tìm thấy công cụ tìm kiếm chuyên biệt nào phù hợp với nhu cầu của mình, tôi đã triển khai một trình duyệt kiểu mẫu đơn giản. Nó liệt kê tất cả các nguyên mẫu có sẵn ở Maven Central. Có quá nhiều thứ để xem xét theo cách thủ công, do đó, tôi đã chọn những người có groupId và tạo tác đã tồn tại từ ít nhất ba năm và đã được cập nhật trong năm ngoái, với hy vọng tìm thấy các dự án được duy trì lâu dài, mà tôi cho rằng hơn có lẽ là một dự án chất lượng tốt. (Tất nhiên, bộ lọc này có thể đã bỏ sót các nguyên mẫu chất lượng tốt hoàn toàn phù hợp với mục tiêu đã nêu; tôi không có cách nào để biết. Như một trường hợp cụ thể, chính kiểu mẫu này không vượt qua bộ lọc đó vì tôi đã thay đổi tạo tác của nó theo thời gian.)

Sau đó, tôi lọc theo cách thủ công danh sách kết quả trên cơ sở mô tả các nguyên mẫu được tìm thấy trong POM của chúng và đưa ra một cái nhìn sâu hơn (thường là trên trang web chính thức) cho một vài nguyên mẫu đầy hứa hẹn trong số đó. Chỉ được com.github.ngeor:archetype-quickstart-jdk8tiết lộ là ứng viên phù hợp. Nhưng tác giả của nó đã viết cho tôi rằng anh ấy “không thực sự sử dụng / bảo trì nguyên mẫu những ngày này nhiều”.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.