2009-01-06 3 views
8

Tôi muốn phát triển một ứng dụng web (không có khung công tác) trộn java với groovy. Tôi đang sử dụng IDE Netbeans với plugin.Groovy, Netbeans và Java EE

Nếu tôi bắt đầu một dự án Java SE mới và thêm một lớp groovy, nó hoạt động không có vấn đề gì .. nhưng khi tôi tạo một dự án java EE mới và thêm một lớp groovy nó không thể biên dịch và cho tôi thấy lỗi sau :

/home/webcodei/NetBeansProjects/testeGroovyWeb/src/java/pacote/Hello.java:23: cannot find symbol 

symbol : class Hroovy 
location: class pacote.Hello 
      Hroovy h = new Hroovy(); 
/home/webcodei/NetBeansProjects/testeGroovyWeb/src/java/pacote/Hello.java:23: cannot find symbol 
symbol : class Hroovy 
location: class pacote.Hello 
      Hroovy h = new Hroovy(); 
2 errors 
/home/webcodei/NetBeansProjects/testeGroovyWeb/nbproject/build-impl.xml:383: The following error   occurred while executing this line: 
/home/webcodei/NetBeansProjects/testeGroovyWeb/nbproject/build-impl.xml:211: Compile failed; see  the compiler error output for details. 
FALHA NA CONSTRUÇÃO (tempo total: 0 segundos) 

Có ai có đầu mối về cách bật Java EE + Groovy trong netbeans không?

ps: Tôi biết sự tồn tại của Grails

ps2: Các jar Groovy là trong classpath của tôi.

Cảm ơn tất cả!

Trả lời

5

Dường như trình quản lý dự án Java Webapp của NetBeans 6.5 không có hỗ trợ "Bật Groovy" có trong các dự án thư viện Java App và Java Class.

tôi có thể nghĩ đến hai cách bạn có thể làm được việc này:

Thứ nhất, bạn có thể đặt mã và kiểm tra Groovy của bạn trong một dự án riêng biệt như một thư viện Java Class. Sau đó, làm cho webapp Java phụ thuộc vào dự án Groovy. NetBeans sẽ tự động xây dựng dự án phụ thuộc, vì vậy bạn sẽ khó nhận thấy chúng nằm trong các dự án riêng biệt.

Thứ hai, "Bật Groovy" không phải là ma thuật. Tất cả những gì nó làm là viết một tệp groovy-build.xml trong/nbprojects và sửa đổi build-impl.xml để nhập nó. Groovy-build.xml ghi đè macro "javac" mặc định để gọi "groovyc" thay thế. Nếu bạn hoàn toàn có ích với Ant, bạn có thể sao chép tệp groovy-build.xml từ một dự án Java Application và sao chép nó vào dự án Web Java của bạn và sau đó nhập nó từ tệp build.xml của bạn (trước khi build-impl.xml được nhập khẩu). Groovy-build.xml có thể sẽ cần một vài chỉnh sửa vì một số thuộc tính giữa một webapp và thư viện lớp có một chút khác biệt.

5

@Dave Smith,

Đây chính xác là những gì tôi đã làm. Tôi đã tạo một dự án javase và một webapp và bắt đầu so sánh chúng. Sau một vài phút, tôi nhận ra rằng sự khác biệt duy nhất là groovy-build.xml.

Vì vậy, tôi sao chép groovy-build.xml vào dir, và chèn các dòng sau vào build.xml của tôi:

<import file="nbproject/groovy-build.xml"/> 

Ngay trước khi thường xuyên

<import file="nbproject/build-impl.xml"/> 

Và sau đó được gọi là tệp groovy để ghi đè lên -init-macrodef-javac.

<target depends="-groovy-init-macrodef-javac" name="-pre-compile"> 

</target> 

Tôi cũng cần phải thay đổi không gian tên từ groovy-build.xml để cũ của tôi:

<macrodef name="javac" uri="http://www.netbeans.org/ns/web-project/2"> 

Và chèn classpath J2EE ($ {j2ee.platform.classpath}) vào thuộc tính một vài dòng sau:

<attribute default="${javac.classpath}:${j2ee.platform.classpath}" name="classpath"/> 

Sau đó dự án đã hoạt động thành công!= D

Cảm ơn tất cả!

+0

Tất cả đều hoạt động tốt (cảm ơn!) Ngoại trừ một lỗi khi biên dịch dự án web: "javac: flag không hợp lệ: $ {javac.compilerargs.jaxws}". Để thử, tôi đã xóa cờ bổ sung này trong tệp groovy-build.xml và biên dịch đã thành công. Bất kỳ lựa chọn thay thế cho hack xấu xí này? –

+0

Chúc ai đó đã đưa ra một ví dụ về groovy-build.xml để chúng ta không phải bận tâm cài đặt Grails chỉ để có được ... và tôi tự hỏi liệu có ai thậm chí đang sử dụng công cụ này hay không, thậm chí là tìm kiếm trên Github. .xml "không đưa ra ví dụ! – User