vấn đề nhật thực maven-archetype-webapp


75

Tôi đang cố gắng tạo một ứng dụng web rất đơn giản với maven và eclipse, nhưng tôi không thấy vui chút nào, thực tế là ngược lại của niềm vui.

Tôi vào File -> New Project, chọn Maven Project, và chọn maven-archetype-webapp. Khi tôi hoàn thành trình hướng dẫn, một cấu trúc ứng dụng web được tạo nhưng không có thư mục 'java' trong chính, chỉ có tài nguyên và ứng dụng web.

Vì vậy, tôi nhấp chuột phải vào main và chọn Class mới. Lớp được tạo dưới tài nguyên (?!) Và hơn nữa, dường như không có sự biên dịch nào của nó bằng java. Tôi có thể mắc lỗi ngu ngốc và không có cú pháp đánh dấu nào xuất hiện. Nó giống như java không nhận ra nó.

Ngoài ra, tôi đã thử tạo một thư mục 'java' mới trong thư mục chính, nhưng vẫn có cùng các triệu chứng java không tồn tại.

Đưa cái gì? Điều này khiến tôi phát điên ..

Cảm ơn tất cả!


Các bạn - cảm ơn rất nhiều! Tôi vừa thử giải pháp đơn giản của Pascal và nó hoạt động. Tôi sẽ thử tất cả những thứ bạn đề xuất.
Jeremy

Câu trả lời:


85

Chỉ cần tạo một javathư mục bên dưới main(tức là src/main/java) và nhấp chuột phải vào dự án của bạn và chọn Maven> Cập nhật cấu hình dự án .


10
Tôi biết đây là một câu hỏi cũ nhưng nó vẫn là một câu hỏi hàng đầu trên Google nên chỉ cần tự hỏi liệu có ai có thể trả lời câu hỏi của tonga dưới đây và giải thích tại sao Maven không chỉ đơn giản đưa câu hỏi này vào làm mặc định? Ví dụ, có một trường phái suy nghĩ trong Maven rằng cấu trúc thư mục này không 'tốt' cho các ứng dụng web vì một lý do nào đó?
Mick

22
  1. Theo mặc định, Khi bạn tạo một dự án với maven archetype "maven-archetype-webapp", nó sẽ không tạo bất kỳ java và thư mục thử nghiệm nào.
  2. Bạn có thể thêm thủ công các thư mục đó dưới dạng src / main / java và src / test / java.
  3. Sau khi thêm các thư mục này, nhấp chuột phải vào dự án của bạn trong trình khám phá dự án, đi tới maven> cập nhật dự án conf.

6
Đây là phần kỳ lạ nhất của Maven. Tại sao không tạo src / main / java, src / test / java, src / test / resources cùng nhau khi tạo mẫu ứng dụng web? Đây không phải là lỗi của Maven sao?
tonga

5

Đơn giản chỉ cần tạo một thư mục java trong main (tức là src / main / java) và nhấp chuột phải -> Đường dẫn xây dựng -> Sử dụng thư mục nguồn


4

Bất kỳ thứ gì khác đều có khả năng thuộc về nguyên mẫu và cách bạn đã định cấu hình pom.xml. Cấu trúc thư mục bạn mô tả giống với cấu trúc được maven-archetype-webapptạo trên dòng lệnh.


3

Đây là một bài viết tuyệt vời mà tôi đã đọc khi tôi gặp khó khăn khi hiểu cách xây dựng nhiều dự án thành một bằng cách sử dụng Maven. Cụ thể, bài viết này giải thích cách thiết lập dự án WEB (tệp chiến tranh) để sử dụng dự án java tiêu chuẩn bên trong (tệp jar).

Nếu bạn có hiểu biết cơ bản về Maven, hãy chuyển đến các phần ở cuối: Làm cách nào để xây dựng các loại dự án khác? Làm cách nào để tạo nhiều dự án cùng một lúc?

http://maven.apache.org/guides/getting-started/index.html#How_do_I_build_other_types_of_projects

Nếu bạn chưa quen với Maven, hãy xem:

http://www.mkyong.com/spring/quick-start-maven-spring-example/

Tin tôi đi, mkyong biết chuyện gì đang xảy ra!


1
Cảm ơn liên kết để hiểu cách Maven sử dụng nhiều dự án.
asgs

3

Đơn giản chỉ cần tạo thư mục mới có tên java trong src / main /

Sau đó nhấp chuột phải vào dự án và chọn maven-> cập nhật dự án


2

Có một tùy chọn để tạo một thư mục nguồn trong eclipse. Hoặc bạn có thể đi đến đường dẫn xây dựng trong thuộc tính dự án và thêm một thư mục hiện có làm thư mục nguồn.

Nếu bạn định sử dụng cấu trúc thư mục không chuẩn, bạn sẽ phải chỉ định nó trong maven


2

cấu trúc ứng dụng web được tạo nhưng không có thư mục 'java' trong main

Tạo src / main / java của riêng bạn.

hơn nữa, dường như không có biên dịch của nó bằng java. Tôi có thể mắc lỗi ngu ngốc và không có cú pháp đánh dấu nào xuất hiện. Nó giống như java không nhận ra nó.

sau khi tạo cấu trúc dir thích hợp, hãy thực hiện lệnh maven

mvn eclipse:eclipse 

sau đó làm mới dự án trong nhật thực.

-SE


OP đang sử dụng m2eclipse, không phải là maven-eclipse-plugin
Pascal Thivent

Tuyệt vời! maven-eclipse-plugin tốt hơn nhiều so với m2e.
asgs

2

cho src / main / java dự án của bạn >> thuộc tính >> đường dẫn xây dựng java >> nguồn >>
tìm kiếm "Dự án của bạn src / main / java (missin)" >>>

chỉnh sửa> tên thư mục >> tiếp theo >> Mẫu bao gồm: -----> Thêm >> src / main / java OK

và nếu lỗi vẫn không phân phối

>>>  look in Target Runtimes  and check your apache in checkbox

Trước đó, tôi gặp lỗi trình biên dịch yêu cầu đổi tên gói của tôi thành main.java.xyz; Sau bước này, Eclipse không bao giờ yêu cầu điều đó nữa. Cho đến khi src / main / java nằm trên đường dẫn src. xyz là tên gói của tôi. Và bây giờ tôi có thể viết gói xyz với bất cứ .Thanks lỗi
Dexter

<plugins> <plugin> <artifactId> maven-compiler-plugin </artifactId> <version> 3.6.1 </version> <configuration> <source> 1.8 </source> <target> 1.8 </target> </ configuration > </plugin> <plugin> <groupId> org.apache.maven.plugins </groupId> <artifactId> maven-war-plugin </artifactId> <version> 3.1.0 </version> <configuration> <! - - <warSourceDirectory> WebContent </warSourceDirectory> -> </configuration> </plugin> </plugins>
Lisa

1

trong IntelliJ IDEA 13 trước tiên bạn phải tạo thư mục "java" trong thư mục chính sau đó -> đi tới "mở cài đặt mô-đun" - để làm điều này, bạn có thể nhấp vào tên dự án và nhấn f4-, và đặt nhãn của thư mục "java" thành " nguồn ”.


1

Đây là giải pháp của tôi. Nó hoạt động mà không có bất kỳ vấn đề.

Có thể có câu hỏi liên quan đến lý do tại sao tất cả các bước này là bắt buộc và tôi tin rằng chúng khá chính hãng. Nhưng đây là một trong những cách để làm cho ứng dụng web của bạn hoặc bất kỳ thành phần nào khác hoạt động trên nhật thực bằng cách sử dụng Maven từ dòng lệnh .

1) Mở cửa sổ lệnh

2) mvn archetype: create -DgroupId = your package -DartifactId = your Project -DarchetypeArtifactId = your archetype. Trong trường hợp của tôi "maven-archetype-webapp" -DinteractiveMode = false

3) cd Dự án của bạn

4) mvn eclipse: eclipse -Dwtpversion = 2.0

5) Đi tới hệ thống tệp. Chuyển đến dự án mới tạo của bạn. tạo thư mục, a) java trong main
b) kiểm tra trong src c) java và tài nguyên đang kiểm tra

6) mvn eclipse: sạch

7) mvn eclipse: eclipse -Dwtpversion = 2.0

8) nhập dự án Project của bạn trong eclipse

Cảm ơn, Sid


1

Làm theo cách khác. Đầu tiên hãy tạo một dự án ứng dụng web, sau đó thêm khung công tác Maven (trong Intellij - nhấp chuột phải vào dự án và chọn Thêm hỗ trợ khung công tác). Nó sẽ tạo các thư mục phù hợp cho bạn.


1

Nhấp chuột phải vào Maven Project -> Build Path -> Configure Build Path In Order & Export tab, bạn có thể thấy thông báo như chọn hộp kiểm 'JRE System Library' và 'Maven Dependencies' Nhấp vào OK Bây giờ bạn có thể chúng


1

Tôi đã gặp vấn đề tương tự ngay cả khi tôi đã thêm thư viện hệ thống JRE vào phiên bản java hiện tại của mình nhưng vẫn gặp sự cố tương tự, sau đó tôi chỉ xóa thư viện hệ thống JRE và thêm một lần nữa nó hoạt động với tôi.

  • Để xóa Thư viện hệ thống JRE nhấp chuột phải vào dự án -> thuộc tính -> đường dẫn xây dựng java -> chọn thư viện hệ thống JRE -> xóa

  • Để thêm JRE vào thuộc tính-> đường dẫn xây dựng java -> thêm thư viện -> thư viện hệ thống JRE -> chọn JRE -> kết thúc


1

Chỉ cần thêm một thư mục mới "java" trong src / main. sẽ giải quyết vấn đề. Vì thư mục classpath với java đã có sẵn trong tệp .classpath của dự án đã tạo nên việc thêm thư mục java sẽ không gây ra bất kỳ lỗi nào. xem mục nhập bên dưới trong tệp .classpath, cho phép thêm thư mục java.

<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>


0

lỗi xảy ra khi Thư viện Hệ thống JRE được trỏ sai. Bây giờ, hãy chuyển đến tab Thư viện và thay đổi Thư viện hệ thống JRE thành phiên bản chính xác.


0

Các bước sau hoạt động trong eclipse 2020-06

  1. Tệp-> Mới-> Dự án Maven
  2. Chọn "Tạo một dự án đơn giản (bỏ qua lựa chọn kiểu mẫu)"
  3. Chọn đóng gói là "chiến tranh" (điều này sẽ tạo ra cả thư mục webapp và java)
  4. Tạo dự án sau khi chỉ định id nhóm và id phần mềm
  5. Cập nhật pom.xml với các phiên bản java và trình biên dịch, sau đó nhấp chuột phải vào dự án, chọn Maven-> Cập nhật dự án
  6. Nếu dự án không ở dạng faceted (Nó không ở dạng faceted nếu đang mở rộng dự án trong Project explorer, nó không hiển thị các chi tiết như "Bộ mô tả triển khai" và "Dịch vụ web JAX-WS", điều này đã xảy ra trong một trong những cài đặt nhật thực của tôi và tôi không biết tại sao), sau đó thực hiện các bước sau
    1. nhấp chuột phải vào dự án, đi đến Thuộc tính, nhấp vào Các khía cạnh của Dự án, chuyển đổi sang dạng khía cạnh, chọn đúng phiên bản "Mô-đun Web động", bật hộp kiểm và cũng chọn đúng phiên bản Java Facet.
    2. "Có sẵn cấu hình khác" được hiển thị trong cửa sổ đó, hãy nhấp vào nó và chỉ định thư mục WebContent. (thay thế WebContent bằng src / main / webapp)
    3. Nếu bạn muốn chạy ứng dụng trong các máy chủ được định cấu hình trong eclipse, thì hãy chỉ định các phần phụ thuộc maven sẽ được triển khai trong "Triển khai hội đồng". Điều này cũng sẽ triển khai các phụ thuộc maven "được cung cấp", nhưng tôi nghĩ rằng nó tốt cho việc thử nghiệm. Để phân phối thực tế, bạn có thể cung cấp tệp chiến tranh được tạo từ gói maven.
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.