2008-10-15 81 views
112

Có cách nào để biên dịch một dự án Java dựa trên Eclipse từ dòng lệnh không?Xây dựng dự án Java Eclipse từ dòng lệnh

Tôi đang cố gắng tự động hóa bản dựng của mình (sử dụng FinalBuilder không kiến) và tôi không phải là chuyên gia về Java cũng như Eclipse. Tôi có lẽ có thể tìm ra cách để làm điều này với các tùy chọn dòng lệnh java thẳng, nhưng sau đó dự án Eclipse cảm thấy như rất nhiều nỗ lực lãng phí.

Trong trường hợp không có cách nào để biên dịch một dự án Eclipse thông qua dòng lệnh, có cách nào để tạo dòng lệnh java bắt buộc từ bên trong Eclipse không? Hoặc có một số tập tin tôi có thể poke xung quanh để tìm các bước biên dịch nó đang làm đằng sau hậu trường?


Guys, Tôi đang tìm kiếm một câu trả lời mà không KHÔNG bao gồm kiến. Hãy để tôi lặp lại câu hỏi ban đầu ....... Có cách nào để xây dựng một dự án Eclipse từ dòng lệnh không?

Tôi không nghĩ rằng đây là một câu hỏi không hợp lý cho rằng tôi có thể làm một cái gì đó như thế này cho visual studio:

devenv.exe /build "Debug|Any CPU" "C:\Projects\MyProject\source\MyProject.sln" 
+3

Làm thế nào là không có một plugin/jar cho điều này !! – Kieveli

+1

Ok ... Tôi đã thêm một câu trả lời đúng mới. – Kieveli

Trả lời

55

Bạn có thể xây dựng một dự án thực thông qua một không gian làm việc từ dòng lệnh:

eclipsec.exe -noSplash -data "D:\Source\MyProject\workspace" -application org.eclipse.jdt.apt.core.aptBuild 

Plugin sử dụng plugin jdt apt để tự động tạo không gian làm việc của bạn. Điều này còn được gọi là 'Xây dựng không đầu'. Thật khó để tìm ra. Nếu bạn không sử dụng một exe win32, bạn có thể thử này:

java -cp startup.jar -noSplash -data "D:\Source\MyProject\workspace" -application org.eclipse.jdt.apt.core.aptBuild 

Cập nhật

Vài năm trước che khuất thay startup.jar với "phân launcher"

https://wiki.eclipse.org/Equinox_Launcher

Trên Eclipse Mars (MacOX):

java -jar /Applications/Eclipse.app/Contents/Eclipse/plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar -noSplash -data "workspace" -application org.eclipse.jdt.apt.core.aptBuild 

Tham số -data chỉ định vị trí của vùng làm việc của bạn.

Số phiên bản cho trình khởi chạy bình phương sẽ phụ thuộc vào phiên bản nhật thực bạn có.

+3

Mặc dù từ lâu tôi đã chuyển từ dự án này và không thể xác minh xem câu trả lời này có thực sự hoạt động hay không, tôi đang thay đổi câu trả lời được chấp nhận cho câu trả lời này. Bởi vì nó chỉ ra rằng Eclipse thực sự có một chuyển đổi dòng lệnh. –

+3

Chỉ một ý nghĩ - có vẻ như điều này chỉ hoạt động đối với các không gian làm việc đã tồn tại từ trước. Tôi đoán điều này làm cho nó khó khăn, ví dụ, kiểm tra dự án từ kiểm soát nguồn và xây dựng nó theo cách này. – John

+0

Tôi tin rằng không gian làm việc của tôi đã được cam kết vào kho svn. Nó có đường dẫn tương đối hoặc cấu trúc thư mục phù hợp. – Kieveli

2

Các apporoach bình thường hoạt động theo cách khác xung quanh: Bạn tạo xây dựng của bạn dựa trên maven hoặc ant và sau đó sử dụng tích hợp cho IDE của bạn lựa chọn để bạn độc lập với nó, đó là đặc biệt. quan trọng khi bạn cố gắng mang lại cho các thành viên mới trong nhóm tăng tốc hoặc sử dụng một máy chủ tích hợp để xây dựng tự động. Tôi khuyên bạn nên sử dụng maven và để cho nó làm việc nặng nhọc cho bạn. Tạo một tệp pom và tạo dự án eclipse qua mvn eclipse: eclipse. HTH

+4

Thường thì tốt hơn rất nhiều để mô phỏng luồng công việc hiện tại thay vì yêu cầu mọi nhà phát triển thay đổi hành vi của họ. Đặc biệt khi Eclipse nhanh hơn nhiều so với kiến. –

2

This question chứa một số liên kết hữu ích trên bản dựng không có đầu, nhưng chúng chủ yếu hướng đến việc tạo plugin. Tôi không chắc có bao nhiêu nó có thể được áp dụng cho các dự án Java thuần túy.

-5

Những gì nhật thực thường làm là BUILD chỉ tệp java. Cho rằng bạn sẽ có thể xem classpath từ tệp .classpath và các nguồn được yêu cầu từ tệp .project và thực hiện một javac trên đó. Nó sẽ khá dễ dàng.

+13

Nếu nó dễ dàng, thì nó nên được đưa vào câu trả lời của bạn! – Kieveli

21

Để hoàn thành câu trả lời André, một giải pháp kiến ​​có thể giống như một trong những mô tả trong Emacs, JDEE, Ant, and the Eclipse Java Compiler, như trong:

 <javac 
      srcdir="${src}" 
      destdir="${build.dir}/classes"> 
     <compilerarg 
      compiler="org.eclipse.jdt.core.JDTCompilerAdapter" 
      line="-warn:+unused -Xemacs"/> 
     <classpath refid="compile.classpath" /> 
     </javac> 

Yếu tố compilerarg cũng cho phép bạn vượt qua trong thêm args dòng lệnh để trình biên dịch thực.

Bạn có thể tìm thấy một full ant script example here đó sẽ là viện dẫn trong một dòng lệnh với:

java -cp C:/eclipse-SDK-3.4-win32/eclipse/plugins/org.eclipse.equinox.launcher_1.0.100.v20080509-1800.jar org.eclipse.core.launcher.Main -data "C:\Documents and Settings\Administrator\workspace" -application org.eclipse.ant.core.antRunner -buildfile build.xml -verbose 

NHƯNG tất cả những gì liên quan đến kiến, mà không phải là những gì Keith là sau.

Đối với một bộ sưu tập hàng loạt, vui lòng tham khảo Compiling Java code, đặc biệt là phần "Sử dụng trình biên dịch đợt"

Lô biên dịch lớp nằm ở JDT Lõi plug-in. Tên của lớp là org.eclipse.jdt.compiler.batch.BatchCompiler. Nó được đóng gói thành plugins/org.eclipse.jdt.core_3.4.0..jar. Kể từ 3.2, nó cũng có sẵn như là một tải xuống riêng biệt. Tên của tệp là ecj.jar.
Kể từ 3.3, lọ này cũng chứa hỗ trợ cho jsr199 (API trình biên dịch) và hỗ trợ cho jsr269 (xử lý chú thích). Để sử dụng hỗ trợ xử lý chú thích, cần có 1,6 VM.

Chạy trình biên dịch đợt Từ dòng lệnh sẽ cung cấp cho

java -jar org.eclipse.jdt.core_3.4.0<qualifier>.jar -classpath rt.jar A.java 

hay:

tùy chọn biên dịch
java -jar ecj.jar -classpath rt.jar A.java 

Tất cả java được chi tiết trong phần đó là tốt.

Sự khác biệt với các tính năng biên soạn trực quan dòng lệnh Studio là Eclipse dường như không trực tiếp đọc .project và classpath của nó trong một đối số dòng lệnh. Bạn phải báo cáo tất cả các thông tin chứa trong .project và .classpath trong các tùy chọn dòng lệnh khác nhau để đạt được kết quả biên dịch rất giống nhau.

Vì vậy, câu trả lời ngắn gọn là: "có, loại Eclipse thực hiện". ;)

+2

Có thể biên dịch một không gian làm việc với dự án Eclipse bằng cách sử dụng dự án ant4eclipse, nhưng nó cần rất nhiều mỡ khuỷu tay vì bạn cần thực hiện tất cả các bước cần thiết theo cách thủ công dựa trên thông tin meta bạn trích xuất. Tôi đã thực hiện nó cho các dự án trong nhà của chúng tôi, nhưng tôi sẽ không khuyên bạn nên nó trừ khi bạn thực sự cần! Chúng tôi đã làm :-D –

+0

@ Thorbjørn Ravn Andersen: cảm ơn bạn đã phản hồi.Bạn cũng có thể đăng câu trả lời trong chủ đề này minh họa loại "mỡ khuỷu tay" liên quan ở đây;) – VonC

+0

tốt, những gì tôi đã tấn công với nhau dựa trên ant4eclipse - yêu cầu tệp projectSet.psf - để mô phỏng chức năng "xuất khẩu có thể chạy được" Vì vậy, không có câu trả lời. Bên cạnh đó, nó không chạy Eclipse, nhưng mô phỏng Eclipse bằng cách sử dụng ant: D –

-3

Câu trả lời ngắn gọn. Số Eclipse không có công tắc dòng lệnh như Visual Studio để xây dựng một dự án.

+3

Câu trả lời ngắn gọn: có. Eclipse loại nào. Ngoại trừ bạn phải báo cáo tất cả các thông tin chứa trong .project và .classpath trong các tùy chọn dòng lệnh khác nhau – VonC

+0

Các giải pháp xây dựng bên ngoài (đối với Eclipse) như ant hoặc maven thường được sử dụng cho điều này, như đã lưu ý trong các phản hồi khác. –

0

Xin chào Chỉ thêm vào nhận xét của VonC. Tôi đang sử dụng trình biên dịch ecj để biên dịch dự án của tôi. nó đã được ném expcetion rằng một số các lớp học không được tìm thấy. Tuy nhiên, dự án đã được bulding tốt với trình biên dịch javac.

Vì vậy, chỉ tôi thêm các lớp vào classpath (mà chúng tôi phải vượt qua như là đối số) và bây giờ làm việc của mình tốt ... :)

Kulbir Singh

5

Sau 27 năm, tôi cũng cảm thấy không thoải mái khi phát triển trong IDE.Tôi đã thử các đề xuất này (ở trên) - và có lẽ chỉ không làm theo mọi thứ đúng - vì vậy tôi đã thực hiện tìm kiếm trên web và tìm thấy những gì đã làm việc cho tôi tại 'http://incise.org/android-development-on-the-command-line.html'.

Câu trả lời dường như là sự kết hợp của tất cả các câu trả lời ở trên (hãy cho tôi biết nếu tôi sai và chấp nhận lời xin lỗi của tôi nếu có).

Như đã đề cập ở trên, eclipse/adt không tạo tệp kiến ​​thức cần thiết. Để biên dịch mà không thực IDE (và không tạo ra các kịch bản kiến):

1) Tạo build.xml trong thư mục cấp cao nhất của bạn:

android list targets (to get target id used below) 

android update project --target target_id --name project_name --path top_level_directory 

    ** my sample project had a target_id of 1 and a project name of 't1', and 
    I am building from the top level directory of project 
    my command line looks like android update project --target 1 --name t1 --path `pwd` 

2) Tiếp theo, tôi lập dự án. Tôi hơi bối rối bởi yêu cầu không sử dụng 'kiến'. Hy vọng - người yêu cầu có nghĩa là anh ta không muốn viết bất kỳ kịch bản kiến ​​nào. Tôi nói điều này vì bước tiếp theo là để biên dịch các ứng dụng sử dụng kiến ​​

ant target 

    this confused me a little bit, because i thought they were talking about the 
    android device, but they're not. It's the mode (debug/release) 
    my command line looks like ant debug 

3) Để cài đặt gói ứng dụng vào thiết bị tôi đã phải sử dụng kiến ​​một lần nữa:

ant target install 

    ** my command line looked like ant debug install 

4) Để chạy dự án trên điện thoại Android của tôi, tôi sử dụng adb.

adb shell 'am start -n your.project.name/.activity' 

    ** Again there was some confusion as to what exactly I had to use for project 
    My command line looked like adb shell 'am start -n com.example.t1/.MainActivity' 
    I also found that if you type 'adb shell' you get put to a cli shell interface 
    where you can do just about anything from there. 

3A) Một mặt lưu ý: Để xem nhật ký việc sử dụng thiết bị:

adb logcat 

3B) Một bên thứ hai lưu ý: Các liên kết nêu trên cũng bao gồm hướng dẫn để xây dựng toàn bộ dự án từ lệnh .

Hy vọng điều này sẽ giúp giải đáp thắc mắc. Tôi biết tôi thực sự vui khi tìm thấy mọi thứ về chủ đề này tại đây.

+1

nếu dự án đã được xây dựng (trong chế độ gỡ lỗi f.ex.) bạn có thể sử dụng 'ant installd' để cài đặt mà không cần xây dựng –

1

Chỉ muốn thêm hai xu của tôi vào điều này. Tôi đã thử làm như @Kieveli gợi ý cho người không win32 (lặp đi lặp lại dưới đây) nhưng nó đã không làm việc cho tôi (trên CentOS với Eclipse: Luna):

java -cp startup.jar -noSplash -data "D:\Source\MyProject\workspace" -application org.eclipse.jdt.apt.core.aptBuild 

Mở thiết lập riêng của tôi trên CentOS sử dụng Eclipse (Luna) này làm việc:

$ECLIPSE_HOME/eclipse -nosplash -application org.eclipse.jdt.apt.core.aptBuild startup.jar -data ~/workspace 

Đầu ra nên trông một cái gì đó như thế này:

Building workspace 
Building '/RemoteSystemsTempFiles' 
Building '/test' 
Invoking 'Java Builder' on '/test'. 
Cleaning output folder for test 
Build done 
Building workspace 
Building '/RemoteSystemsTempFiles' 
Building '/test' 
Invoking 'Java Builder' on '/test'. 
Preparing to build test 
Cleaning output folder for test 
Copying resources to the output folder 
Analyzing sources 
Compiling test/src/com/company/test/tool 
Build done 

Không khá chắc chắn lý do tại sao nó dường như đã làm nó hai lần, nhưng có vẻ như để làm việc.

Các vấn đề liên quan