Chuyển đổi các loại project trong Eclipse

Khi tạo project mới hoặc import từ file system, CVS, SVN, trong một vài trường hợp thì Eclipse có thể không chịu nhận biết đó là một Java project. Sự khác biệt giữa Java-based project (như Java, Web application, EJB, etc.) là Eclipse không tự động nhận ra các package, source cũng như library. Như thế, bạn sẽ không thấy các package theo qui tắc package naming là your.package.to.your.class, mà chỉ thấy dạng thư mục bình thường your/package/to/your/class. Hơn nữa, Eclipse sẽ không tự động build hoặc hỗ trợ Java doc annotation. Đó là sự bất tiện mà đa số developer không mong muốn. Vậy phải làm sao để convert một project thường, hoặc project mới lấy từ CVS, SVN thành Java-based project?

0. Tạo một project mới rồi dùng chức năng import file system của Eclipse. Cách này cũng có thể giải quyết vấn đề nhưng bạn phải vất vả rất nhiều để tạo lại cấu trúc project.

1. Sửa file cấu hình project của Eclipse. Cách này khả dĩ nhất, không cần phải tạo project mới, không cần import, chỉ cần bổ sung thêm một vài dòng cấu hình.

Eclipse quản lý mã nguồn bạn đang làm việc theo dạng project. Project là một đơn vị luận lý (và vật lý) được dùng trong Eclipse để quản lý các tài nguyên có liên quan với nhau, ví dụ như các file mã nguồn Java, JSP, HTML, images trong cùng một ứng dụng Web, hoặc có thể là các file mã nguồn cộng với gói thư viện được bạn sử dụng để tạo một ứng dụng nào đó. Thông tin về các tài nguyên trong cùng một project, cũng như một số thông tin cần thiết khác (như classpath, library đối với Java-based project) được lưu trong hai file XML-based là .project và .classpath, đặt trong thư mục gốc của project. Ví dụ tiêu biểu về file cấu hình của một project non-Java trong Eclipse là:

File .project

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>nonJava</name>
<comment></comment>
<projects></projects>
<buildSpec></buildSpec>
<natures></natures>
</projectDescription>

Trong đó, phần tử <name>…</name> thể hiện tên của project. Các phần tử còn lại đều là empty. Một project kiểu non-Java có thể tạo ra bằng cách chọn New -> General/Project.

Bây giờ chúng ta xem xét file cấu hình của một Java-based project và so sánh.

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>javaproject</name>
<comment></comment>
<projects> </projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments> </arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

Sự khác biệt có thể nhận thấy rõ ràng. Như vậy chúng ta có một cách đơn giản để chuyển đổi project non-Java hoặc từ CVS, SVN thành Java project bằng cách mở file .project, thêm vào nội dụng giữa cặp phần tử <buildSpec>…</buildSpec>, và <natures>…</natures>. Nếu bạn nhìn trong Package Explorer, giữa non-Java và Java project sẽ khác nhau ở kí hiệu (Java project có thêm kí hiệu J trong icon). Với cách này, bạn có thể vui vẻ phán rằng có thể chuyển giữa các loại project bất kì trong Eclipse? Chỉ việc tham khảm sự khác nhau giữa hai project, rồi bổ sung hoặc chỉnh sửa phần thiếu, dư… Điều đó đúng, nhưng với những gì đã làm thì chỉ đúng một phần. File cấu hình .project chỉ mới là những cấu hình căn bản cho một Java project. Eclipse cần thêm file .classpath để bổ sung thông tin về vị trí thư mục mã nguồn, vị trí thư viện, etc. Đa số các công việc này bạn sẽ được Eclipse hỗ trợ với giao diện đồ họa (kích chọn Project, sau đó là Properties). Và các tài liệu hướng dẫn cũng không đề cập chi tiết tới các file cấu hình này. Chính vì thế developers phải bỏ công mày mò thêm nếu đối mặt với vấn đề trên. Tìm hiểu về các file cấu hình này sẽ có ích cho bạn trong một vài tình huống và sẽ có ích cho những ai thích mày mò ruột gan của Eclipse.

Hãy xem xét nội dung cơ bản của một file .classpath của Java project đơn giản (không phải J2EE hoặc Web application)

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="output" path="build"/>
</classpath>

phần tử <classpathentry> dùng để thiết lập một số thông tin quan trọng như chỉ định thư mục mã nguồn (để giúp Eclipse nhận biết và xây dựng cấu trúc package, class), chỉ định container dùng để chạy (launch) project (trong trường hợp là Java-based thì container thường là JRE Library, nếu là Web application trên Tomcat thì ngoài JRE, còn phải thêm thành phần container là path=”org.eclipse.jst.j2ee.internal.web.container” và path=”org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v5.0″), và chỉ định thư mục output.

Thử thêm một vài thư viện .jar vào project và xem lại .classpath:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="c:/dev/lib/postgresql-8.1-407.jdbc3.jar"/>
<classpathentry kind="lib" path="/EchoService/src"/>
<classpathentry kind="output" path="build"/>
</classpath>

Chúng ta thấy thêm các <classpathentry> với thuộc tính kind=”lib”. Như vậy quá trình chuyển đổi sẽ bao gồm thêm một bước nữa là sửa (hoặc tạo mới nếu chưa có) file .classpath, bổ sung ít nhất là hai thành phần <classpathentry kind=”src” path=”your_source_path”/>, <classpathentry kind=”output” path=”your_output_path”/>

Các thành phần còn lại có thể bổ sung bằng giao diện đồ họa. Như vậy, cách chuyển đổi project trong Eclipse bằng file cấu hình có thể tóm tắt:

1.Thêm các nội dung vào file .project để báo cho Eclipse biết đó là Java-based project (và ngược lại)
2.Sửa (hoặc tạo mới nếu chưa có) file .classpath, bổ sung các phần tử <classpathentry />
3. Vào Eclipse và mở project để xem lại kết quả và bổ sung thêm cấu hình bằng giao diện đồ họa

About Huy Trần

Just a lazy member of the blogosphere.
This entry was posted in FOSS. Bookmark the permalink.

Có 1 phản hồi tại Chuyển đổi các loại project trong Eclipse

  1. Pingback: Top Posts « Word of the day - Learning English online

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s