Có cách nào để tạo tệp ant build.xml tự động từ Eclipse không?


76

Từ Eclipse, tôi thấy mình có thể dễ dàng xuất tệp xây dựng Ant cho dự án của mình . Nó cung cấp các tham chiếu đến thư viện của bên thứ 3 và một số mục tiêu cơ sở. Tôi đang sử dụng nó từ tệp bản dựng chung của mình. Điều duy nhất làm tôi khó chịu về điều này, là nếu có gì đó được sửa đổi trong cấu trúc dự án (như thêm thư viện bên thứ 3 mới), chúng tôi phải nghĩ (vâng, đôi khi có thể khó!) Về việc tạo lại tệp build.xml đó. Tôi tự hỏi liệu có ai ở đây biết cách cập nhật nó tự động không. Bằng cách "tự động", ý tôi là không cần thiết phải yêu cầu Eclipse tạo lại nó một cách rõ ràng mỗi khi cần. Tôi không biết điều gì có thể là nguyên nhân ...

Bất kỳ suy nghĩ hoặc kiến ​​thức về điều này?

Cảm ơn!

MJ


1
Bạn đã thử xem thêm bước trình tạo tùy chỉnh chưa?
Kelly S. French

Tôi không chắc chính xác làm thế nào tôi có thể đi về điều này. Tôi đã xem xét những người xây dựng dự án. Tôi nghĩ có thể có thứ gì đó ở đó ... Tôi có thể thêm một trình xây dựng sẽ tạo tệp build.xml sau khi hoàn tất "Trình tạo Java" chính. Đây có phải là những gì bạn gọi là bước xây dựng không? Tôi có thể thử điều này nếu tôi có bất kỳ manh mối nào về việc gọi hành động buildfile kiến ​​xuất theo chương trình trên dự án. Tôi nghi ngờ nó thậm chí có thể.
Joanis

Xin chào M. Joanis, cuối cùng bạn đã tìm ra giải pháp nào? Tôi đang cố gắng đạt được điều tương tự, vì vậy sẽ rất tuyệt nếu bạn có thể chia sẻ những phát hiện của mình.
theDmi

Xin chào DMM, tôi chưa có để cập nhật tệp đó. Vì vậy, tôi không còn bận tâm nhiều nữa với việc tìm cách cập nhật nó tự động. Với sự đơn giản về cấu trúc tệp, có lẽ tôi sẽ viết một tập lệnh tạo ra nó (giữ IDE và quá trình xây dựng được tách biệt cùng một lúc). Tôi có rất nhiều mục tiêu được tạo tự động, nhưng hầu hết chúng không quan trọng ngoài IDE, vì vậy tôi chỉ còn 3-4 ứng dụng chính. Phụ thuộc vào nhu cầu cụ thể của bạn ...
Joanis

Câu trả lời:


69

Nhấp chuột phải vào một dự án Eclipse, sau đó "Xuất" rồi đến "Chung" rồi đến "Kiến xây dựng tệp". Tôi không nghĩ rằng có thể tùy chỉnh định dạng đầu ra.


Xin lỗi, tôi đã thêm ghi chú vào "tự động". Như tôi đã nói, tôi biết tôi có thể dễ dàng tạo và xuất một tệp như vậy. Điều làm tôi khó chịu là phải nói với Eclipse để tạo lại nó mỗi khi nó cần được thực hiện. Tôi quan tâm đến cách tự động kích hoạt hành động "export ant buildfile" đó trên các dự án của tôi. Tôi thấy không có vấn đề gì (cho đến nay) với định dạng đầu ra.
Joanis

Sau đó, tôi không nghĩ rằng nó là khả thi trong Eclipse tiêu chuẩn. Có lẽ một số plugin cho phép nó mặc dù ...
Guillaume

1
Điều này dường như tạo ra build.xml cho các dự án web nhưng không phải cho tai. Tôi có thể tự động tạo build.xml cho tệp tai không?
Mark W

Hiện tại, tính năng này đã có trong plugin Eclipse Java. Bạn cần plugin Nền tảng công cụ web và phối cảnh J2EE của nó.
Guillaume

5

Tôi đã và đang cố gắng làm điều tương tự. Những gì tôi tìm thấy là "Export Ant Buildfile" được khởi chạy trong tệp org.eclipse.ant.internal.ui.datatransfer.AntBuildfileExportPage.java. Điều này nằm trong plugin org.eclipse.ant.ui.

Để xem nguồn, hãy sử dụng phối cảnh Phát triển trình cắm và mở chế độ xem Trình cắm. Sau đó nhấp chuột phải vào plugin org.eclipse.ant.ui và chọn nhập dưới dạng> dự án nguồn.

Kế hoạch của tôi là tạo một chương trình Java để khởi động quá trình tạo tệp kiến ​​xây dựng theo chương trình và gọi tệp này trong tệp Kiến mỗi khi tôi xây dựng bằng cách thêm tệp kiến ​​vào trình tạo dự án của mình (Nhấp chuột phải vào tùy chọn trên projet, trong trình tạo chuyển hướng).


2
Có vẻ như một con đường rất hứa hẹn. Có vẻ như bạn đã hiểu rõ về kiến ​​trúc plugin Eclipse. Rất vui được bạn thông báo cho chúng tôi về bất kỳ tiến bộ nào bạn đạt được. Cảm ơn!
Joanis

Cập nhật: Thật không may, công việc của tôi không cho tôi đủ thời gian để thực hiện nó. Thay vào đó, nó trở thành một nghi thức của nhóm mà mỗi khi chúng tôi thêm một phụ thuộc mới, nhóm sẽ xuất lại các tệp xây dựng. Nó không phải là lý tưởng, nhưng nó có khả năng tự thực thi vì nếu ai đó cố thực hiện một bản dựng trên máy chủ mà không xuất các tệp bản dựng thì nó thường bị hỏng.
Tristan Ratchford

4

Tôi cũng gặp phải vấn đề tương tự, môi trường làm việc của chúng tôi dựa trên các dự án Eclipse Java và chúng tôi cần tự động xây dựng một tệp ANT để chúng tôi có thể sử dụng một máy chủ tích hợp liên tục (trong trường hợp của chúng tôi là Jenkins).

Chúng tôi đã triển khai công cụ Eclipse Java to Ant của riêng mình, hiện đã có trên GitHub:

ant-build-for-java

Để sử dụng nó, hãy gọi:

java -jar ant-build-for-java.jar <folder with repositories> [<.userlibraries file>]

Đối số đầu tiên là thư mục có các kho. Nó sẽ tìm kiếm đệ quy thư mục cho bất kỳ .projecttệp nào . Công cụ sẽ tạo một build.xmltrong thư mục nhất định.

Theo tùy chọn, đối số thứ hai có thể là tệp .userlibraries đã xuất, từ Eclipse, cần thiết khi bất kỳ dự án nào sử dụng thư viện người dùng Eclipse. Công cụ này chỉ được thử nghiệm với các thư viện người dùng sử dụng các đường dẫn tương đối, đó là cách chúng tôi sử dụng chúng trong repo của mình. Điều này ngụ ý rằng JAR và các kho lưu trữ khác mà các dự án cần thiết đều nằm trong một dự án Eclipse và được tham chiếu từ đó.

Công cụ chỉ hỗ trợ các phần phụ thuộc từ các dự án Eclipse khác và từ các thư viện người dùng Eclipse.


2

Hãy xem tệp .classpath trong dự án của bạn, tệp này có thể chứa hầu hết thông tin mà bạn muốn. Tùy chọn dễ nhất có thể là cuộn "xuất build.xml" của riêng bạn, tức là xử lý .classpath thành một build.xml mới trong quá trình xây dựng chính nó và sau đó gọi nó bằng một nhiệm vụ con kiến.

Phân tích cú pháp một chút XML đối với tôi nghe có vẻ dễ dàng hơn nhiều so với việc kết nối vào Eclipse JDT.


1
Tôi hoàn toàn đồng ý rằng phân tích cú pháp một tệp XML hấp dẫn hơn nhiều so với việc viết một plugin Eclipse hoặc một cái gì đó tương tự. Đề xuất của bạn thật thú vị, nhưng tệp .classpath không "ngắn gọn" một chút sao? Của tôi cung cấp 5 đường dẫn và đó là nó. Điều tuyệt vời với tệp xây dựng Ant đã xuất là nó không chỉ cung cấp mục tiêu để xây dựng toàn bộ mà còn cung cấp các mục tiêu chính xác cho phép chạy các bài kiểm tra JUnit. Tôi sẽ ghi nhớ điều đó.
Joanis

Điểm tốt. Tôi mong đợi rằng Eclipse cũng tính đến "bản chất dự án" khi xác định mục tiêu nào cần tạo trong các tệp xây dựng. Bạn có thể kiểm tra cách Eclipse tạo ra build.xml, vì nó sử dụng kiến ​​bên trong. Nhưng điều đó sẽ đưa bạn trở lại việc phải thực hiện một "dự án khoa học" để hiểu được những phần bên trong Eclipse này. Có lẽ các bước Builder thực sự là lựa chọn phù hợp.
Jan Schiefer

2

Nếu tất cả những gì bạn cần là các mục nhập classpath, tôi sẽ làm như sau để sử dụng đường dẫn xây dựng nhật thực.

<xmlproperty file=".classpath" collapseAttributes="true" delimiter=";" />

Sau đó, đặt giá trị đó trong đường dẫn

<path id="eclipse.classpath">
    <pathelement path="${classpath.classpathentry.path}"/>
</path>


<target name="compile" depends="init">

    <javac srcdir="${src}" destdir="${build}" updatedProperty="compiled">
        <classpath refid="eclipse.classpath"/>
    </javac>
</target>

2

Tôi là người đã tặng bộ lọc xuất Ant cho Eclipse. Tôi đã thêm tính năng xuất tự động, nhưng chỉ cho eclipse2ant của trình cắm thêm cá nhân của tôi , mà tôi vẫn duy trì để điều phối các bản sửa lỗi.

Rất tiếc, tôi không có thời gian để hợp nhất nó với các bản dựng Eclipse chính thức.


0
  • Chọn Tệp> Xuất từ menu chính (hoặc nhấp chuột phải vào tên dự án và chọn Xuất> Xuất… ).
  • Trong hộp thoại Export, chọn General> Ant Buildfiles như sau: nhập mô tả hình ảnh ở đây

  • Nhấp vào Tiếp theo . Trong Generate Ant Buildfilesscreen:

    • Kiểm tra dự án trong danh sách.
    • Bỏ chọn tùy chọn "Tạo mục tiêu để biên dịch dự án bằng trình biên dịch Eclipse" - vì chúng tôi muốn tạo một tệp xây dựng độc lập với Eclipse.
    • Để tên cho tệp xây dựng Ant làm mặc định: build.xml

nhập mô tả hình ảnh ở đây

  • Nhấp vào Kết thúc , Eclipse sẽ tạo build.xmltệp trong thư mục của dự án như sau:
    nhập mô tả hình ảnh ở đây
  • Nhấp đúp vào build.xmltệp để mở nội dung của nó trong trình chỉnh sửa Ant: nhập mô tả hình ảnh ở đây

nguồn

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.