2014-04-23 7 views
0

build.xml 파일 내부에서 groovyc을 실행하려고합니다.Ant build.xml에서 groovyc를 실행할 수 없습니다.

myapp/ 
    src/main/java 
     <Some Java sources> 
    src/main/groovy 
     DemoController 
    lib/main 
     groovy-all-2.2.2.jar 
     servlet-2.4.jar 
    gen 
     bin 
     dist 

가 여기 내 compile 대상입니다 : 여기 내 프로젝트 디렉토리 구조 년대 src/main/groovy에서, 내 코드에서

<?xml version="1.0"?> 
<project name="myapp" default="compile" basedir="."> 
    <path id="groovy-path"> 
     <fileset dir="lib/main" includes="groovy-all-2.2.2.jar" /> 
    </path> 

    <taskdef name="groovyc" 
     classname="org.codehaus.groovy.ant.Groovyc" 
     classpathref="groovy-path" /> 

    <!-- Other targets omitted for brevity... --> 

    <target name="compile" depends="init"> 
     <echo message="Compiling Java sources..." /> 
     <javac destdir="gen/bin" includeantruntime="false"> 
      <src path="src/main/java" /> 
      <src path="lib/main" /> 
     </javac> 

     <echo message="Compiling Groovy sources..." /> 
     <groovyc destdir="gen/bin"> 
      <src path="src/main/java" /> 
      <src path="src/main/groovy" /> 
      <src path="lib/main" /> 
     </groovyc> 
    </target> 
</project> 

, 나는 그루비 클래스 DemoController라고 있습니다

package com.ar.myapp.controllers 

import javax.servlet.http.HttpServlet 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

class DemoController extends HttpServlet { 
    @Override 
    void doGet(HttpServletRequest request, HttpServletResponse response) { 
     String resp = "Hello, Groovy!"; 
     response.getWriter().write(resp); 
    } 
} 

이클립스에서 (Groovy 플러그인을 설치하고이 코드를위한 Groovy 프로젝트를 만들었습니다.) 컴파일러 오류나 적색 플래그가 보이지 않습니다. 나는 개미 compile 대상을 실행할 때, 나는 다음과 같은 예외 얻을 : 나는 lib/main/servlet-2.4.jar을 열 때

compile: 
    [echo] Compiling Java sources... 
    [javac] Compiling 1 source file to /home/myuser/sandbox/eclipse/workspace/myapp/gen/bin 
    [echo] Compiling Groovy sources... 
    [groovyc] Compiling 1 source file to /home/myuser/sandbox/eclipse/workspace/myapp/gen/bin 
    [groovyc] org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: 
    [groovyc] /home/myuser/sandbox/eclipse/workspace/myapp/src/main/groovy/com/myapp/controllers/DemoController.groovy: 3: unable to resolve class javax.servlet.http.HttpServlet 
    [groovyc] @ line 3, column 1. 
    [groovyc] import javax.servlet.http.HttpServlet 
    [groovyc] ^
    [groovyc] 
    [groovyc] /home/myuser/sandbox/eclipse/workspace/myapp/src/main/groovy/com/myapp/controllers/DemoController.groovy: 4: unable to resolve class javax.servlet.http.HttpServletRequest 
    [groovyc] @ line 4, column 1. 
    [groovyc] import javax.servlet.http.HttpServletRequest; 
    [groovyc] ^
    [groovyc] 
    [groovyc] /home/myuser/sandbox/eclipse/workspace/myapp/src/main/groovy/com/myapp/controllers/DemoController.groovy: 5: unable to resolve class javax.servlet.http.HttpServletResponse 
    [groovyc] @ line 5, column 1. 
    [groovyc] import javax.servlet.http.HttpServletResponse; 
    [groovyc] ^
    [groovyc] 
    [groovyc] 3 errors 

내가 실제로 Http* 클래스 패키지 보는가 어디 그들은 (javax.servlet.http 아래)되어야한다. 이 groovyc의 경로에 추가되지 않은 경우이 오류를 이해할 수 있지만 이는 의미가 없습니다. 여기서 무슨 일이 일어나고있는거야?

+0

이 아닌'의'''이어야한다 마디? http://stackoverflow.com/questions/1575220/problems-with-setting-the-classpath-inantant를 참조하십시오. –

답변

3

classpath 속성을 groovyc 작업에 추가해야합니다.

<groovyc destdir="gen/bin"> 
    <src path="src/main/groovy" /> 
    <classpath> 
     <path location="gen/bin"/> 
     <fileset dir="lib/main"> 
      <include name="*.jar" /> 
     </fileset> 
    </classpath> 
    </groovyc> 

원본 build.xml에는 javac 및 groovyc 작업의 Java 소스가 포함되어 있습니다. 1) 소스를 참조하는 대신 groovyc 작업의 클래스 경로에 javac 타겟 (즉 gen/bin)을 추가하거나 2) Groovy 작업에서 java 및 groovy 소스를 함께 컴파일하고 javac 단계를 완전히 제거 할 수 있습니다.

옵션 2 : 제거 "javac의"작업 및 자바 + 그루비 소스와 함께 그루비 작업을 사용

<groovyc destdir="gen/bin"> 
    <src path="src/main/java" /> 
    <src path="src/main/groovy" /> 
    <classpath> 
     <fileset dir="lib/main"> 
      <include name="*.jar" /> 
     </fileset> 
    </classpath> 
    </groovyc>