Xây dựng Dự án Java Eclipse từ Dòng lệnh


118

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?

Tôi đang cố gắng tự động hóa bản dựng của mình (không sử dụng FinalBuilder chứ không phải kiến) và tôi không phải là chuyên gia Java hay Eclipse. Tôi có thể tìm ra cách thực hiện đ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 bị lãng phí.

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


Các bạn, tôi đang tìm một câu trả lời 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 vô lý vì tôi có thể làm điều gì đó như thế này cho studio trực quan:

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 15/09/09

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

Câu trả lời:


61

Bạn có thể xây dựng một dự án nhật 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

Nó sử dụng jdt aptplugin để xây dựng không gian làm việc của bạn một cách tự động. Đây còn được gọi là 'Xây dựng không đầu'. Thật khó để hình dung. Nếu bạn không sử dụng exe win32, bạn có thể thử cách 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, nhật thực được thay thế startup.jarbằng "máy phóng phân tử"

https://wiki.eclipse.org/Equinox_Launcher

Trên Sao Hỏa Eclipse (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

Các -datatham số quy định cụ thể vị trí của không gian làm việc của bạn.

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


4
Mặc dù tôi đã chuyển từ dự án này từ lâu và không thể xác minh câu trả lời này có thực sự hoạt động hay không, như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 công tắc dòng lệnh.
Keith G

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

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

2
Bạn thấy kết quả xây dựng như thế nào? Tôi đã thử điều này và nhận được kết quả: "Xây dựng không gian làm việc", nhưng tôi không nhận được dấu hiệu về việc xây dựng thành công hay thất bại.
Dikla

Bạn cũng có thể xây dựng không gian làm việc của mình thông qua một tập lệnh ant dòng lệnh. Xem help.eclipse.org/indigo/…
reprogrammer,

22

Để hoàn thành câu trả lời của André, một giải pháp kiến ​​có thể giống như giải pháp được mô tả trong Emacs, JDEE, Ant và Trình biên dịch Java Eclipse , 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>

Phần tử compilerarg cũng cho phép bạn chuyển thêm args dòng lệnh vào trình biên dịch eclipse.

Bạn có thể tìm thấy một ví dụ tập lệnh kiến ​​đầy đủ ở đây sẽ được gọi 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, đó không phải là những gì Keith theo đuổi.

Để biên dịch hàng loạt, vui lòng tham khảo Biên dịch mã Java , đặc biệt là phần " Sử dụng trình biên dịch hàng loạt "

Lớp trình biên dịch hàng loạt nằm trong trình cắm thêm JDT Core. Tên của lớp là org.eclipse.jdt.compiler.batch.BatchCompiler. Nó được đóng gói thành các plugin / org.eclipse.jdt.core_3.4.0..jar. Kể từ 3.2, nó cũng có sẵn dưới dạng tải xuống riêng biệt. Tên của tệp là ecj.jar.
Kể từ 3.3, jar này cũng chứa hỗ trợ cho jsr199 (API trình biên dịch) và hỗ trợ jsr269 (Xử lý chú thích). Để sử dụng hỗ trợ xử lý chú thích, bạn phải có máy ảo 1.6.

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

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

hoặc là:

java -jar ecj.jar -classpath rt.jar A.java

Tất cả các tùy chọn biên dịch java cũng được trình bày chi tiết trong phần đó.

Sự khác biệt với tính năng biên dịch dòng lệnh của Visual Studio là Eclipse dường như không đọc trực tiếp .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ả thông tin có 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 giống nhau.

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


2
Có thể biên dịch 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 dầu mỡ 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 mà bạn trích xuất. Tôi đã thực hiện nó cho các dự án nội bộ của chúng tôi, nhưng tôi sẽ không giới thiệu nó trừ khi bạn THỰC SỰ cần! Chúng tôi đã làm :-D
Thorbjørn Ravn Andersen

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

tốt, những gì tôi đã tấn công cùng nhau dựa trên ant4eclipse - yêu cầu tệp projectSet.psf - để mô phỏng chức năng "export runnable jar", do đó không có câu trả lời. Bên cạnh đó, nó không phải là chạy Eclipse, nhưng bắt chước Eclipse sử dụng kiến: D
Thorbjørn Ravn Andersen

Đi qua câu trả lời cũ này: Chúng tôi nhận thấy "bản dựng Eclipse mô phỏng bằng cách sử dụng các tệp cấu hình Eclipse" quá khó về lâu dài và tôi sẽ thực sự khuyên những người khác không nên làm theo cách đó. Sử dụng các dự án Maven thay thế.
Thorbjørn Ravn Andersen

1
@JeffPuckettII Cảm ơn bạn. Tôi đã khôi phục liên kết.
VonC

8

Sau 27 năm, tôi cũng không cảm thấy thoải mái khi phát triển trong một IDE. Tôi đã thử các đề xuất này (ở trên) - và có lẽ không làm theo đúng mọi thứ - vì vậy tôi đã thực hiện tìm kiếm trên web và tìm thấy những gì phù hợp với mình 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 (vui lòng 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 vậy).

Như đã đề cập ở trên, eclipse / adt không tạo các tệp kiến ​​cần thiết. Để biên dịch mà không có IDE eclipse (và không tạo tập lệnh ant):

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 biên dịch dự án. Tôi hơi bối rối trước yêu cầu không sử dụng 'ant'. Hy vọng rằng - người yêu cầu có nghĩa là anh ta không muốn viết bất kỳ tập lệnh kiến ​​nào. Tôi nói điều này vì bước tiếp theo là biên dịch ứng dụng bằng cách sử dụng ant

 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 apk vào thiết bị, tôi phải sử dụng lại ant:

 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 lưu ý phụ: Để xem nhật ký từ việc sử dụng thiết bị:

 adb logcat

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

Hy vọng rằng, điều này sẽ giúp giải đáp thắc mắc. Tôi biết tôi đã thực sự hạnh phúc khi tìm thấy bất cứ điều gì về chủ đề này ở đây.


1
nếu dự án đã được xây dựng (ở 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
serv-inc

4

Apporoach thông thường hoạt động theo cách khác: Bạn tạo công trình của mình dựa trên maven hoặc kiến và sau đó sử dụng tích hợp cho IDE của bạn để bạn độc lập với nó, đó là điều đặc biệt. quan trọng khi bạn cố gắng nâng cao tốc độ các thành viên mới trong nhóm hoặc sử dụng máy chủ tích hợp phổ biến cho các bản dựng tự động. Tôi khuyên bạn nên sử dụng maven và để nó thực hiện công việc nặng nhọc cho bạn. Tạo một tệp pom và tạo dự án nhật thực qua mvn eclipse: eclipse. HTH


4
Việc mô phỏng quy trình làm việc hiện tại thường tốt hơn nhiều thay vì yêu cầu mọi nhà phát triển thay đổi hành vi của họ. Đặc biệt là khi Eclipse nhanh hơn nhiều so với kiến.
Thorbjørn Ravn Andersen

2

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


1

Tôi chỉ muốn thêm hai xu của tôi vào điều này. Tôi đã thử làm như @Kieveli đề xuất cho không phải win32 (lặp lại bên dưới) nhưng nó không hoạt động với 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

Trong thiết lập cụ thể của tôi trên CentOS bằng Eclipse (Luna), điều này đã hoạt động:

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

Đầu ra sẽ trông giống như sau:

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 hoàn toàn chắc chắn tại sao nó dường như đã làm điều đó hai lần, nhưng nó có vẻ hoạt động.


0

Xin chào Chỉ cần thêm ý kiến ​​VonC. Tôi đang sử dụng trình biên dịch ecj để biên dịch dự án của mình. nó đã ném ra sự cố gắng rằng một số lớp không được tìm thấy. Nhưng dự án đã hoạt động tốt với trình biên dịch javac.

Vì vậy, tôi chỉ thêm các lớp vào classpath (mà chúng ta phải chuyển dưới dạng đối số) và bây giờ nó hoạt động tốt ... :)

Kulbir Singh


-3

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


5
Câu trả lời ngắn gọn: có. Eclipse loại nào tốt. 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

Các giải pháp xây dựng bên ngoài (đối với Eclipse) như kiến ​​hoặc maven thường được sử dụng cho việc này, như đã lưu ý trong các phản hồi khác.
JR Lawhorne
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.