2011-02-11 5 views
4

나는 gradle 빌드를 만들었고 자바, 스칼라, 전쟁, 부두 코드와 그 모든 것이 잘 작동했다.gradle : web-inf에 항아리 추가



apply plugin: 'java' 
apply plugin: 'scala' 
apply plugin: 'war' 
apply plugin: 'jetty' 

List compileTime = [ 
        "javax.servlet:servlet-api:[email protected]", 
        "org.scalatra:scalatra_2.8.0:[email protected]", 
        "org.mortbay.jetty:jetty:[email protected]", 
        "com.mongodb.casbah:casbah_2.8.0:[email protected]", 
        "org.scala-lang:scala-library:[email protected]" 
      ] 

List runTime = [ 
        "org.scalatra:scalatra_2.8.0:[email protected]", 
        "com.mongodb.casbah:casbah_2.8.0:[email protected]", 
        "org.scala-lang:scala-library:[email protected]" 
      ] 

//     "org.mortbay.jetty:servlet-api:[email protected]", 
repositories { 
    mavenCentral() 
    mavenRepo urls: ["http://scala-tools.org/repo-releases","http://mirrors.ibiblio.org/pub/mirrors/maven2","http://repo1.maven.org/maven2","https://oss.sonatype.org/content/repositories/snapshots","https://oss.sonatype.org/content/repositories/releases"] 
} 

dependencies { 
     scalaTools 'org.scala-lang:scala-compiler:2.8.1' 
     scalaTools 'org.scala-lang:scala-library:2.8.1' 
      compile compileTime 
      runtime runTime 
      testCompile "junit:junit:3.8.2" 
     } 

task myTask (type: War) { 
    println configurations.runtime.collect 
    println classpath() 
} 

war { 
    // from 'main/webapp' 
    webInf { from 'src/main/webapp/WEB-INF' } 
    // classpath classpath()/
    classpath configurations.runtime 

    webXml = file('src/main/webapp/WEB-INF/web.xml') 
} 

나는 1)에만 필요한 항아리를 추가. 전쟁에서, 위의 코드에서 나는 내 전쟁에서 부두와 서블렛 항아리를 얻고 있습니다. !

답변

11

전쟁에 참여해서는 안되는 종속성에 대해서는 "providedCompile"또는 "suppliedRuntime"범위를 사용하십시오. 빌드 스크립트에

일부 발언 :

  1. 당신은 "컴파일"클래스 경로에 이미있는 "런타임"클래스 경로 의존성을 넣을 필요가 없습니다. Gradle이이 작업을 수행합니다. "providedCompile"및 "suppliedRuntime"과 동일합니다.
  2. 서블릿 API와 Jetty에 실제로 컴파일 종속성이 있습니까? (사실 일 수 있습니다, 궁금합니다.)
  3. "mavenRepo urls : ..."의 사용법이 잘못되었습니다. repos를 하나씩 나열해야합니다. 자세한 내용은 Gradle 사용자 설명서의 32.5.1 Maven repositories을 참조하십시오.
  4. 어디서나 "@jar"를 사용하는 이유를 잘 모릅니다. 이로 인해 이행 적 종속성 관리가 효과적으로 비활성화됩니다. 어쩌면 3의 결과일까요?
  5. "전쟁 {...}"구성이 기본값이며 생략 될 수 있습니다. 사용자 가이드의 23.6 War을 참조하십시오.