Chuyển đổi dự án Eclipse hiện có sang dự án Maven


246

Đối với một dự án tại nơi làm việc, chúng tôi đang xem xét sử dụng plugin Maven cho Eclipse để tự động hóa các bản dựng của chúng tôi. Ngay bây giờ quy trình này phức tạp hơn nhiều so với yêu cầu và chúng tôi hy vọng rằng Maven sẽ đơn giản hóa mọi thứ thành bản dựng chỉ bằng một cú nhấp chuột.

Câu hỏi của tôi là, có một trình hướng dẫn hoặc trình nhập tự động để chuyển đổi dự án Java Eclipse hiện có sang dự án Maven, sử dụng trình cắm Maven không? Hoặc tôi nên tạo một dự án Maven mới và sao chép thủ công tất cả các tệp nguồn, lib, v.v.


3
Bản dựng hiện tại của bạn có sử dụng tập lệnh Ant không?
matt b

4
Có lẽ bạn nên chuyển câu trả lời được chấp nhận
Mr_and_Mrs_D

Câu trả lời:


141

Nếu bạn chỉ muốn tạo POM mặc định và bật các tính năng m2eclipse: vì vậy tôi cho rằng bạn hiện không có thiết lập xây dựng tự động thay thế mà bạn đang cố gắng nhập và tôi giả sử bạn đang nói về plugin m2eclipse.

Plugin m2eclipse cung cấp tùy chọn nhấp chuột phải vào một dự án để thêm pom.xml mặc định này:

Phiên bản M2E mới hơn

Nhấp chuột phải vào Project -> menu con Cấu hình -> Convert to Maven Project

Các phiên bản M2E cũ hơn

Nhấp chuột phải vào Project -> menu con Maven -> Bật Quản lý phụ thuộc.

Điều đó sẽ làm cần thiết để kích hoạt plugin cho dự án đó.


Để trả lời ' có nhà nhập khẩu hoặc thuật sĩ tự động không? ': Không phải là tôi biết. Sử dụng tùy chọn ở trên sẽ cho phép bạn kích hoạt plugin m2eclipse cho dự án hiện tại của bạn tránh việc sao chép thủ công. Bạn vẫn sẽ cần phải thực sự thiết lập các phụ thuộc và các thứ khác mà bạn cần để tự xây dựng.


Mặc dù nó cho phép M2Eclipse, nhưng nó không thực sự là một trình hướng dẫn không nhập dự án Eclipse hiện có. Thay vào đó, nó cung cấp cho người dùng tùy chọn chọn phụ thuộc, v.v., điều này có thể khó khăn nếu người dùng không có nhiều kinh nghiệm với Maven.
Kaleb Pederson

Tôi đã giải thích câu hỏi là 'tôi có cần tạo dự án mới và sao chép thủ công xung quanh để sử dụng plugin m2eclipse không?', Tôi sẽ làm rõ.
brabster

16
Mục menu maven không có sẵn cho tôi từ menu nhấp chuột phải (m2eclipse mới nhất), câu trả lời của chengdong hoạt động.
wulfgarpro

8
Trên phiên bản hiện tại của Eclipse (4.2) và m2eclipse, mục menu là Convert / Convert to Maven Project.
Jesper

12
Mục menu @Jesper là "Cấu hình / Chuyển đổi sang Dự án Maven"
angelcervera

293

Bắt đầu từ m2e 0.13.0 (nếu không sớm hơn), bạn có thể chuyển đổi dự án Java sang dự án Maven từ menu ngữ cảnh. Đây là cách thực hiện:

  • Nhấp chuột phải vào dự án Java để bật lên menu ngữ cảnh
  • Chọn Cấu hình> Chuyển đổi sang Dự án Maven

Dưới đây là các bước chi tiết với ảnh chụp màn hình.


30
Điều này vẫn không tạo ra các cấu trúc thư mục và thêm các phụ thuộc trong pom.
Klaus Nji

2
m2e vẫn không tạo cấu trúc thư mục maven và thêm phụ thuộc trong pom?
Mr_and_Mrs_D

2
Giải pháp của tôi (@ShriKant Vashishtha) được đề cập dưới đây giải quyết tất cả các vấn đề được mô tả ở đây. Tạo cấu trúc Maven, xóa các khoảng trắng trong tên thư mục, tạo pom.xml và di chuyển các thư mục nguồn trong cấu trúc Maven
ShriKant Vashishtha

Hoạt động hoàn hảo và hoàn hảo trên Windows 10 Eclipse Mars tại thời điểm đó.
Matthis Kohli 7/10/2015

Nó hoạt động hoàn hảo với tôi
WitnessTruth

12

Tôi đã có cùng một vấn đề và muốn Mavenise toàn bộ không gian làm việc nhật thực chứa khoảng 60 dự án Eclipse. Làm như vậy thủ công đòi hỏi nhiều thời gian và các tùy chọn thay thế không khả thi. Để giải quyết vấn đề, cuối cùng tôi đã tạo ra một dự án có tên là nhật thực đến github. Vì nhật thực không có tất cả thông tin cần thiết về các phụ thuộc, nên nó thực hiện như sau:

  • Dựa trên <classpathentry/>các phần tử XML trong tệp. Classpath, nó tạo ra các phụ thuộc vào một dự án khác, xác định tệp jar thư viện và dựa trên tên của nó (ví dụ jakarta-oro-2.0.8.jar) xác định phiên bản của nó. Hiện tại artifactIdgroupIdgiống như tôi không thể tìm thấy thứ gì đó có thể trả lại cho tôi nhóm Maven của sự phụ thuộc dựa trên artifactId. Mặc dù đây không phải là một giải pháp hoàn hảo nhưng nó cung cấp một nền tảng tốt để tăng tốc Mavenisation.

  • Nó di chuyển tất cả các thư mục nguồn theo quy ước Maven (như src/main/java)

  • Vì các dự án Eclipse có tên có khoảng trắng rất khó xử lý trên môi trường Linux / Unix, nên nó cũng đổi tên chúng thành tên không có khoảng trắng.

  • Các tệp pom.xml kết quả chứa các phụ thuộc và cấu trúc pom cơ bản. Bạn phải thêm các plugin Maven cần thiết theo cách thủ công.


Hấp dẫn ! Có phải nó được chuyển đến Luna? Dự án vẫn sẽ là một dự án nhật thực (hợp lệ .classpath.projectcác tập tin)? Bạn có thể thêm vào câu trả lời của mình cách sử dụng plugin của bạn để maven hóa một dự án JavaSE đơn giản - và những thay đổi thực tế trong cấu trúc thư mục là gì?
Mr_and_Mrs_D

Xin lỗi nhưng tôi không biết Luna là gì. Nó sẽ không còn là dự án nhật thực hợp lệ nữa vì cấu trúc thư mục dự án bị thay đổi. Tuy nhiên, việc tạo cấu hình nhật thực được sửa đổi bằng Maven rất dễ dàng. Đây không phải là một plugin mà là một công cụ. Làm thế nào để chạy nó đã được đề cập trong README của dự án. Cấu trúc thư mục được chuyển đổi trong quy ước Maven. Vì vậy, tất cả các nguồn đi đến src / main / java chẳng hạn.
ShriKant Vashishtha

Luna là phiên bản mới nhất của nhật thực !!
Mr_and_Mrs_D

7

Nhấp chuột phải vào tên dự án> Cấu hình> Chuyển đổi sang dự án Maven> nhấp vào kết thúc. Tại đây bạn sẽ thêm một số phụ thuộc để tải xuống và thêm tệp jar dự kiến ​​của bạn.

Điều này sẽ tạo một tệp pom.xml được tạo tự động. Mở tệp đó ở định dạng xml trong trình chỉnh sửa nhật thực của bạn. Sau khi xây dựng thẻ ( </build>) thêm phụ thuộc của bạn mà bạn có thể sao chép từ trang web maven và thêm chúng vào đó. Bây giờ bạn tốt để đi. Những phụ thuộc này sẽ tự động thêm các tệp jar yêu cầu của bạn.


1
Điều này sẽ tạo ra cấu trúc thư mục maven?
Mr_and_Mrs_D

có, nó sẽ tạo cấu trúc thư mục maven dựa trên mẫu archetype được ánh xạ phù hợp và cấu hình tối thiểu. Bạn phải thêm từng phụ thuộc dự án của mình (từ. Classpath) vào POM.xml theo cách thủ công mỗi lần.
Pratap Singh

5

Câu trả lời của Chengdong là chính xác, bạn nên sử dụng Configure>Convert to Maven Project. Tuy nhiên, tôi phải thêm quy trình chuyển đổi đã được cải thiện rất nhiều vì m2e 0.13.0: m2e 1.1+ và m2e-wtp 0.16.0+ hiện có thể chuyển đổi cài đặt nhật thực hiện tại thành cấu hình plugin maven .

Đối với vấn đề chuyển đổi phụ thuộc, bạn có thể dùng thử tính năng tích hợp JBaven Tools (JBT) 4.0, có chứa trình hướng dẫn chuyển đổi thử nghiệm, được cắm vào quy trình chuyển đổi của m2e: http://docs.jboss.org/tools/whatsnew/maven/ maven-news-4.0.0.Beta1.html .

Nó không giả vờ là giải pháp tối ưu (không gì có thể), vì nó sẽ giúp ích rất nhiều cho việc khởi động quá trình chuyển đổi Maven của bạn.

Ngoài ra, FYI, đây là một số ý tưởng để tăng cường quá trình chuyển đổi của m2e , tái cấu trúc để sử dụng bố cục Maven có thể sẽ được triển khai trong tương lai.

JBT 4.0 (yêu cầu Eclipse JavaEE Juno) có thể được cài đặt từ http://doad.jboss.org/jbosstools/updates/ sóng / juno / hoặc từ Thị trường Eclipse


4

Điều đó là cần thiết bởi vì, ít nhiều, khi chúng ta nhập một dự án từ git, đó không phải là một dự án maven, vì vậy các phụ thuộc của maven không nằm trong đường dẫn xây dựng.

Đây là những gì tôi đã làm để biến một dự án chung thành một dự án maven.

dự án chung -> dự án java nhấp chuột phải vào dự án, thuộc tính-> khía cạnh dự án, nhấp vào "java". Bước này sẽ biến một dự án chung thành dự án java.

dự án java -> dự án maven nhấp chuột phải vào dự án, cấu hình -> chuyển đổi sang dự án maven Tại thời điểm này, lib phụ thuộc maven vẫn không nằm trong đường dẫn xây dựng. thuộc tính dự án, xây dựng đường dẫn , thêm thư viện, thêm phụ thuộc maven lib

Và chờ vài giây, khi các phụ thuộc được tải, dự án đã sẵn sàng!


2

Có một chương trình dòng lệnh để chuyển đổi bất kỳ dự án Java nào thành dự án SBT / Maven.

Nó giải quyết tất cả các lọ và cố gắng tìm ra phiên bản chính xác dựa trên tổng kiểm tra SHA, đường dẫn lớp hoặc tên tệp. Sau đó, nó cố gắng biên dịch các nguồn cho đến khi tìm thấy một cấu hình hoạt động. Các tác vụ tùy chỉnh để thực hiện theo cấu hình phụ thuộc cũng có thể được cung cấp.

UniversalResolver 1.0
Usage: UniversalResolver [options]

  -s <srcpath1>,<srcpath2>... | --srcPaths <srcpath1>,<srcpath2>...
        required src paths to include
  -j <jar1>,<jar2>... | --jars <jar1>,<jar2>...
        required jars/jar paths to include
  -t /path/To/Dir | --testDirectory /path/To/Dir
        required directory where test configurations will be stored
  -a <task1>,<task2>... | --sbt-tasks <task1>,<task2>...
        SBT Tasks to be executed. i.e. compile
  -d /path/To/dependencyFile.json | --dependencyFile /path/To/dependencyFile.json
        optional file where the dependency buffer will be stored
  -l | --search
        load and search dependencies from remote repositories
  -g | --generateConfigurations
        generate dependency configurations
  -c <value> | --findByNameCount <value>
        number of dependencies to resolve by class name per jar

https://bitbucket.org/mnyx/universalresolver


Đây có vẻ là một lựa chọn rất hấp dẫn. Nhưng, vì nó hiện đang được đóng gói, nó không dễ tiếp cận. Không rõ ràng làm thế nào để đóng gói và triển khai source.code. Hầu hết các nhà phát triển Java không phải là nhà phát triển Scala, SBT cũng không phải là một công cụ được sử dụng rộng rãi trong cộng đồng.
A. Rick

1

Câu hỏi của tôi là, có một trình hướng dẫn hoặc trình nhập tự động để chuyển đổi dự án Java Eclipse hiện có sang dự án Maven, sử dụng trình cắm Maven không?

Theo như tôi biết, sẽ không có gì tự động chuyển đổi dự án Eclipse thành dự án Maven (nghĩa là sửa đổi bố cục, tạo POM, "tạo" và cung cấp nó bằng siêu dữ liệu, phát hiện các thư viện và các phiên bản của chúng để thêm chúng vào POM , Vân vân). Eclipse chỉ không có đủ siêu dữ liệu để thực hiện điều này (đây chính xác là điểm của POM) và / hoặc để tạo ra một kết quả tốt.

Hoặc tôi nên tạo một dự án Maven mới và sao chép thủ công tất cả các tệp nguồn, lib, v.v.

Đó sẽ là lựa chọn tốt nhất theo ý kiến ​​của tôi. Tạo một dự án Maven, sao chép / di chuyển nguồn, tài nguyên, kiểm tra, kiểm tra tài nguyên vào các thư mục tương ứng của chúng, khai báo các phụ thuộc, v.v.


Tại sao câu trả lời này cao hơn câu trả lời +199? Tôi gần như không thấy cái đó
Evorlor

1

Để chuyển đổi sang Gradle tương tự như Maven:

Nhấp chuột phải vào Project -> menu con Cấu hình -> Convert to Gradle (STS) Project


4
Câu trả lời không liên quan đến câu hỏi
Ripon Al Wasim

1
Tôi đã tìm thấy câu hỏi này bằng cách tìm Gradle, nhiều lần rất hữu ích khi thêm câu trả lời cho hệ điều hành khác thay vì hệ điều hành được hỏi vì nó không tồn tại một câu hỏi cho từng trường hợp riêng lẻ. Về Gradle, tôi sẽ không tạo ra một câu hỏi mới để trả lời những gì tôi cho là hữu ích, thay vào đó tôi đăng bài này. Cảm ơn & Trân trọng.
một
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.