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?
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?
Câu trả lời:
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.
380: remote -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.)
org.apache.maven.archetypes:maven-archetype-quickstart:1.1
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ì.
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.archetypes
groupId. Những điều tốt để bắt đầu là maven-archetype-quickstart
và maven-archetype-webapp
như những người tiền nhiệm của tôi đã nói.
mvn archetype:generate -DgroupId=com.example -DartifactId=foobar -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Tham khảo: Dòng lệnh Build Run Java Maven Project
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.maven-archetype-simple
trong 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?
pom.xml
thủ công và chạy dòng lệnh từ dấu nhắc lệnh.
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
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ế:
mvn archetype:generate -DgroupId=[your-project-groupId] -DartifactId=[your-project-name] -DarchetypeGroupId=com.thepracticaldeveloper -DarchetypeArtifactId=archetype-java-basic-tpd -DarchetypeVersion=1.0.0
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 đó.
groupId
, nhưng archetypeGroupId
để làm gì?
archetypeArtifactId
.
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 Catalog
và 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.
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.)
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.
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-jdk8
tiế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”.